0

我正在尝试使用辅助函数来使函数暂停几秒钟,但它不执行等待函数。

这是我一直在使用的代码:

代码:

public class Triggers : MonoBehaviour {
    IEnumerator wait(float seconds) {
        Debug.Log("In wait");
        yield return new WaitForSeconds(seconds);
        Debug.Log("after wait");
    }

    void OnTriggerEnter(Collider _collider)
    {
        Debug.Log("Destroy");
        gameObject.SetActive(false);
        Debug.Log("Before wait");
        wait(5);
        Debug.Log("activate");
        gameObject.SetActive(true);
    }
}

我会很感激一些帮助。

4

2 回答 2

2

我通过停用子对象来解决它,这是我想在与不可见的父对象发生碰撞时隐藏的实际“物理”对象。所以现在父对象保持活动状态,计算时间并且物理对象“Cube”dis出现并且n 秒后再次出现。

   public class Triggers : MonoBehaviour
{
    IEnumerator wait (float seconds)
    {
        Debug.Log ("In wait");
        GameObject go = GameObject.Find ("Cube");
        go.SetActive(false);
        yield return new WaitForSeconds(seconds);
        Debug.Log ("after wait");
        go.SetActive (true);
    }

    void OnTriggerEnter (Collider _collider)
    {
        Debug.Log ("Destroy");
        Debug.Log ("Before wait");
        StartCoroutine (wait (5));
        Debug.Log ("activate");

    }
于 2013-05-27T13:07:26.400 回答
0

尝试这个 :

StartCoroutine(wait(5));

而不是简单的“等待(5)”。

如果我没记错的话,这就是协程在 C# 中的工作方式……

于 2013-05-26T17:16:27.810 回答