在触发器函数内使用辅助函数

时间:2013-05-26 14:53:54

标签: c# function triggers unity3d

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

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

代码:

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

我很感激一些帮助。

2 个答案:

答案 0 :(得分:2)

我只是通过停用子对象来解决它,这是实际的"物理"对象我想隐藏在与不可见父对象的碰撞中。所以现在父对象保持活动状态,计算时间和物理对象" Cube"在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");

    }

答案 1 :(得分:0)

试试这个:

StartCoroutine(wait(5));

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

这是协程在C#中的工作方式,如果我记得很清楚......