Unity3d:对象设置为几秒钟不可见

本文关键字:几秒 钟不可 对象 设置 Unity3d | 更新日期: 2023-09-27 17:51:24

我正在使用协程来交替使用Renderer.enabled的对象可见性每2秒,但对象不等待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);
    }
    }

}

Unity3d:对象设置为几秒钟不可见

这是因为你在Update方法中有StartCoroutine,它每帧被触发。所以,你每帧启动一个新的协程,你有数百个协程同时运行。

将该协程置于启动位置,因为将其置于update中将使该协程运行多次。只要确保在使用协程时,它们只在必要时被调用,在你的情况下,保持它在更新循环是问题。