我编写了自己的旋转一组对象的功能。我想要一个新的,旋转平滑,所以我需要一个计时器。我试过几次调用Timer,但它不起作用。这是我的代码:
public class rotate_around : MonoBehaviour
{
public Transform sphere;
// Update is called once per frame
void Update ()
{
if (Input.GetKeyDown(KeyCode.RightArrow))
{
sphere.RotateAround(new Vector3(3, 3, 3), new Vector3(0, 1, 0), 45);
timer();
}
}
public IEnumerator timer()
{
yield return new WaitForSeconds(5);
// actually I tried to add Debug.Log("blahblahblah") here, but it still didnt output anything
}
}
答案 0 :(得分:3)
尝试使用StartCoroutine(timer());
而非timer();
答案 1 :(得分:1)
StartCoroutine("timer", true);
是最好的方法!
timer()
只会调用普通方法。 IEnumerator
的工作方式不同。
答案 2 :(得分:0)
如前所述,启动协程的正确方法是StartCoroutine(timer());
从您的代码中不清楚您要实现的目标,目前您在等待这五秒后什么都不做
此外,您可能应该实施某种阻止用户发送协同程序垃圾邮件的机制。你可以设置一个bool标志,或者保持对你开始的协程的引用 - 我经常这样做
Coroutine myRoutine; // in global scope
if (myRoutine==null) myRoutine=StartCoroutine(timer()); // in event handler
myRoutine在完成后将自动为空