[英]How to wait in Unity c# function?
我必須編寫一個代碼,在玩家觸摸它后幾秒鍾內立方體消失。 但我不知道怎么做,因為StartCoroutine(name());
僅在IEnumerator name(){}
中有效,如下所示:
void Start()
{
StartCoroutine(waiter());
}
IEnumerator waiter()
{
//Wait for 4 seconds
yield return new WaitForSeconds(4);
}
但我需要在private void OnCollisionEnter(Collision collision) {}
function 中等待。 我不能做這樣的事情:
void start()
{
StartCoroutine(Text());
}
IEnumerator Text()
{
private void OnCollisionEnter(Collision collision)
{
yield return new WaitForSeconds(3);
StartCoroutine(Text());
rd = GetComponent<Renderer>();
rd.enabled = false;
}
}
如何在OnCollisionEnter
function 中進行冷卻?
void Start() { }
private void OnCollisionEnter(Collision collision) {
StartCoroutine(Text());
}
IEnumerator Text()
{
yield return new WaitForSeconds(3);
rd = GetComponent<Renderer>();
rd.enabled = false;
}
你的嵌套方法沒有意義。
為什么不簡單地讓OnCollisionEnter
本身成為協程:
// Best you already reference this via the Inspector in Unity
[SerializeField] private Renderer _renderer;
private void Awake ()
{
// Alternatively get it ONCE on runtime
if(!_renderer) _renderer = GetComponent<Renderer>();
}
private IEnumerator OnCollisionEnter(Collision collision)
{
yield return new WaitForSeconds(3);
_renderer.enabled = false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.