Buttons haben ein OnClick-Ereignis http://docs.unity3d.com/ScriptReference/UI.Button-onClick.html
Sie erstellen nur eine Methode, die in Ihrem Fall aufgerufen wird, wenn der Code der Wechsel Sprite auf die Schaltfläche geklickt. Da Sie einen Timer verwenden, müssen Sie etwas wie ein bool verwenden, da onClick()
nur einmal aufgerufen wird, wenn Sie darauf klicken, nicht jedes Bild.
Blick https://www.youtube.com/watch?v=J5ZNuM6K27E
bool b_RunSpriteAnim;
public void onClick(){
b_RunSpriteAnim = true;
}
void Update(){
if (b_RunSpriteAnim)
//your anim sprite stuff
}
Dann, wenn das Sprite anim beendet ist, wechseln nur b_RunSpriteAnim
-false
und die Stoppuhr zurückzusetzen.
Bearbeitet: Sie benötigen keinen booleschen Wert. Ich dachte nur, du wolltest es, weil du einen Timer benutzt hast (basierend auf dem Youtube-Link). Wenn Sie das Sprite nur sofort ändern möchten, brauchen Sie es nicht. Wie für Imagethree
nicht funktioniert, ist es, weil Sie es nie in Ihrem Code enthalten haben. Es ist nicht klar, was Sie versuchen, mit Imagethree
zu erreichen, wenn Sie dies in onClick
als auch es würde überschreiben nur die Bild zwei, die gerade eingestellt wurde, so bin ich mir nicht sicher, was Sie erreichen wollen.
public void onClick(){
this.gameObject.GetComponent<SpriteRenderer>().sprite = Imagetwo;
}
Zweite Edit:
public Sprite[] Images;
//Index starts at one because we are setting the first sprite in Start() method
private int _Index = 1;
void Start(){
//Set the image to the first one
this.gameObject.GetComponent<SpriteRenderer>().sprite = Images[0];
}
public void onClick(){
//Reset back to 0 so it can loop again if the last sprite has been shown
if (_Index >= Images.Length)
_Index = 0;
//Set the image to array at element index, then increment
this.gameObject.GetComponent<SpriteRenderer>().sprite = Images[_Index++];
}
Es ist nicht klar, was Sie mit 'Imagethree' zu tun wünschen, so kann ich nicht wirklich sagen. Ich habe auch meine Antwort bearbeitet. Wann willst du es ändern? –