Unity 3D:使用UI按钮

时间:2016-04-02 11:28:46

标签: animation unity3d sprite

我正在关注youtube关于在代码中更改精灵动画的本教程,我想知道是否可以使用UI按钮将其更改为更改精灵动画。有没有人知道如何做到这一点。谢谢!

修改 由于你的帮助,我所使用的脚本有点工作,它将精灵图像从图像1更改为图像2,但我基本上想要实现的是每次单击UI按钮时,精灵图像将从精灵更改图像一(UI按钮点击)>精灵图像二(UI按钮点击)>精灵图像三(UI按钮点击)>然后重复这个过程而不是精灵图像自动改变自己。

1 个答案:

答案 0 :(得分:0)

按钮有一个OnClick事件http://docs.unity3d.com/ScriptReference/UI.Button-onClick.html

您只需创建一个在单击按钮时调用的方法,在您的情况下是更改的精灵代码。看到你正在使用计时器虽然你需要使用像bool这样的东西,因为onClick()只在被点击时被调用一次,而不是每一帧。

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
}

然后,一旦精灵动画完成,只需将b_RunSpriteAnim切换到false并重置计时器。

<强>编辑: 你不需要布尔值。我只是觉得你想要它,因为你使用的是计时器(基于Youtube链接)。如果您只是想立即更改精灵,那么您不需要它。至于Imagethree无法正常工作,这是因为您从未将其包含在代码中。目前尚不清楚您要使用Imagethree尝试实现的目标,如果您将其包含在onClick中,它只会覆盖刚刚设置的图像,所以我不确定您是什么期待实现。

public void onClick(){
    this.gameObject.GetComponent<SpriteRenderer>().sprite = Imagetwo;
}

第二次修改:

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