我正在尝试使用辅助函数,以使函数暂停几秒但不执行等待函数。
这就是我一直在使用的代码:
代码:
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);
}
}
我很感激一些帮助。
答案 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#中的工作方式,如果我记得很清楚......