我正在尝试延迟预制件的生成,并且我尝试使用协程来做到这一点。在播放模式下,生成立即发生,但调试消息没有出现在我的控制台中。所以我得出结论,我的 Spawn() 函数正在工作,问题出在我的协程上,它没有执行。下面是附加到游戏对象的代码,该对象将在单击时在其位置生成我的预制件。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EmptyScript : MonoBehaviour
{
public int id;
public GameObject camera;
Coroutine coroutine;
public IEnumerator DelaySpawn()
{
yield return new WaitForSeconds(2);
Debug.Log("2 seconds");
}
private void OnMouseDown()
{
coroutine = StartCoroutine(DelaySpawn());
camera.GetComponent<GameScript>().Spawn(this.gameObject, id);
}
}
我期望控制台中出现调试消息,但事实并非如此。谢谢你帮助我。
您应该像您设置的调试一样在yield retrun之后移动生成代码,然后应该同时执行日志:
public IEnumerator DelaySpawn()
{
yield return new WaitForSeconds(2);
Debug.Log("2 seconds");
camera.GetComponent<GameScript>().Spawn(this.gameObject, id);
}
private void OnMouseDown()
{
coroutine = StartCoroutine(DelaySpawn());
}