Unity3d:对象设置为秒不可见

时间:2015-06-01 07:56:47

标签: c# unity3d

我每隔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);
    }

    }


}

2 个答案:

答案 0 :(得分:1)

那是因为你在StartCoroutine方法中有Update,每帧都会被触发。所以,你每帧开始一个新的协程,你有几百个协同程序同时运行。

答案 1 :(得分:0)

将协程开始的位置放置在更新中会使协程运行多次。只需确保在使用协同程序时,只有在必要时才会调用它们保持更新循环是问题。