2015-06-01 42 views
0

我正在使用協程來每隔2秒使用Renderer.enabled來交替我的對象可見性,但對象不會等待2秒來更改其狀態,它只是在可見和不可見快速之間交替隨機的,它只是看起來不穩定。Unity3d:將對象設置爲不可見數秒

這裏是我的代碼:

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); 
    } 

    } 


} 

回答

1

那是因爲你有StartCoroutineUpdate方法,它是發射每一幀。所以,你在每一幀開始一個新的協程,並且你有數百個協程同時運行。

0

將協程開始放置在更新中的地方將使協程運行多次。只要確保在使用協程時,只有在必要時才調用它們,例如將它保持在更新循環中就是問題所在。

相關問題