我们可以使用一个数或者是布尔变量来存储当前物品状态,该回收还是该弹出,但是我们发现,物品有至少三个状态,即弹出、停止和回收,因此仅仅使用一个布尔变量无法解决该问题,因此我决定使用两个布尔变量flag1和flag2来协作共同完成判定。当flag1为true时物品弹出,并修改flag1为false;当flag2为true时物品回收,并修改flag2为false.这样可以保证弹出和回收的独立性。
首先我们需要设定两个布尔变量,flag1和flag2分别应用于控制物体弹出和收回,接着我们创建一个string变量存储动画名称,以及创建一个动画变量存储自身的动画组件
public bool flag1 = false; public bool flag2 = false; public string AnimName ; private Animation anim;在start方法中对动画变量进行初始化
void Start() { anim = GetComponent<Animation>(); }接着我们在Update方法中放入两个if语句用于判断该弹出还是该回收物品 弹出物品
if (flag1) { if (anim.isPlaying == false) { anim[AnimName].speed = 1; anim.Play(AnimName); flag1 = false; } }回收物品
if (flag2) { if (anim.isPlaying == false) { anim[AnimName].time = anim[AnimName].length; anim[AnimName].speed = -1; anim.Play(AnimName); flag2 = false; } }总体代码
using System.Collections; using System.Collections.Generic; using UnityEngine; public class display_item : MonoBehaviour { public bool flag1 = false; public bool flag2 = false; public string AnimName ; private Animation anim; // Start is called before the first frame update void Start() { anim = GetComponent<Animation>(); } // Update is called once per frame void Update() { if (flag1) { if (anim.isPlaying == false) { anim[AnimName].speed = 1; anim.Play(AnimName); flag1 = false; } } if (flag2) { if (anim.isPlaying == false) { anim[AnimName].time = anim[AnimName].length; anim[AnimName].speed = -1; anim.Play(AnimName); flag2 = false; } } } }