2016-04-02 3 views
0

Ich befolge dieses Tutorial unter youtube über die Änderung der Sprite-Animation im Code und frage mich, ob ich dies mit der UI-Schaltfläche ändern könnte. weiß jemand, wie man das macht. Vielen Dank!Unity 3D: Ändern der Sprite-Animation mit der UI-Taste

EDIT: Das Skript, das ich irgendwie reposed dank Ihrer Hilfe funktioniert, es ändert sich die Sprite-Bild von Bild ein bis zwei Bild aber was ich im Grunde zu erreichen versucht, dass jedes Mal, wenn ich das Klicken UI-Schaltfläche Das Sprite-Bild ändert sich von Sprite-Bild eins (Klick auf UI-Schaltfläche)> Sprite-Bild zwei (Klick auf UI-Schaltfläche)> Sprite-Bild drei (Klick auf UI-Schaltfläche)> wiederholt den Vorgang anstelle des Sprite-Bildes, das sich automatisch ändert.

+0

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? –

Antwort

0

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++]; 
} 
+0

@JesscaStone 9:40 in diesem turoial, sagt Ihnen, wie Sie diese onClick-Methode an die Schaltfläche zu binden. –

+0

Ähm, ich habe versucht, dir zu antworten, aber ich hatte nicht genug Zeichen übrig, also habe ich meine Frage oben in "addieren Sie eine Antwort", bitte lesen Sie es, danke –

+0

Ähm, ich habe meine Frage bearbeiten, wäre es Schön das du es dir anschauen kannst. Das würde sehr geschätzt werden, wenn Sie es sich ansehen würden. Danke –