当用户点击游戏对象时如何执行协程?

问题描述 投票:0回答:1

我正在尝试延迟预制件的生成,并且我尝试使用协程来做到这一点。在播放模式下,生成立即发生,但调试消息没有出现在我的控制台中。所以我得出结论,我的 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);
    }
}

我期望控制台中出现调试消息,但事实并非如此。谢谢你帮助我。

c# unity-game-engine coroutine
1个回答
0
投票

您应该像您设置的调试一样在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());
}
© www.soinside.com 2019 - 2024. All rights reserved.