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);
}
}
}
这是因为你在Update
方法中有StartCoroutine
,它每帧被触发。所以,你每帧启动一个新的协程,你有数百个协程同时运行。
将该协程置于启动位置,因为将其置于update中将使该协程运行多次。只要确保在使用协程时,它们只在必要时被调用,在你的情况下,保持它在更新循环是问题。