我每隔2秒使用一个协程使用Renderer.enabled
替换我的对象可见性,但是对象不会等待2秒来改变它的状态,它只是在可见和不可见之间快速随机地交替,它是看起来不稳定。
这是我的代码:
using UnityEngine;
using System.Collections;
public class ArrowController : MonoBehaviour {
GameObject arrow = null;
void Start () {
arrow = GameObject.Find ("Arrow");
arrow.GetComponent<Renderer> ().enabled = false;
}
void Update () {
StartCoroutine(showDirection());
}
IEnumerator showDirection(){
while (true) {
GetComponent<MeshRenderer> ().enabled = true;
GetComponent<Renderer> ().enabled = true;
yield return new WaitForSeconds (1);
GetComponent<MeshRenderer> ().enabled = false;
GetComponent<Renderer> ().enabled = false;
yield return new WaitForSeconds (1);
}
}
}
答案 0 :(得分:1)
那是因为你在StartCoroutine
方法中有Update
,每帧都会被触发。所以,你每帧开始一个新的协程,你有几百个协同程序同时运行。
答案 1 :(得分:0)
将协程开始的位置放置在更新中会使协程运行多次。只需确保在使用协同程序时,只有在必要时才会调用它们保持更新循环是问题。