我正在关注youtube关于在代码中更改精灵动画的本教程,我想知道是否可以使用UI按钮将其更改为更改精灵动画。有没有人知道如何做到这一点。谢谢!
修改 由于你的帮助,我所使用的脚本有点工作,它将精灵图像从图像1更改为图像2,但我基本上想要实现的是每次单击UI按钮时,精灵图像将从精灵更改图像一(UI按钮点击)>精灵图像二(UI按钮点击)>精灵图像三(UI按钮点击)>然后重复这个过程而不是精灵图像自动改变自己。
答案 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++];
}