unity3d 如何在for循环中等待x秒c# - unity

rekjcdws  于 2022-12-30  发布在  C#
关注(0)|答案(1)|浏览(448)

我刚开始使用Unity,我想构建以下函数:现在我按下一个按钮,它会在屏幕外产生一个小行星,然后小行星从右向左移动,最后我会在屏幕外摧毁小行星。所有这些都已经工作了。但是现在我想改变按钮的功能,使它延迟几秒钟产生更多的小行星。我不知道该怎么做。我的代码现在看起来像这样:

public class ButtonSkript : MonoBehaviour
{       
    private Vector3 spawnPosition = new Vector3(15, 0, 0);
    public GameObject planet_001Prefab;
    public GameObject planet_011Prefab; // not in use
    public GameObject planet_017Prefab; // not in use
    public GameObject planet_079Prefab; // not in use
    

    public void ShowJourney()
    {
        int[] asteroids_array = {27, 569, 1293, 37};
        int[] material_type_array = {0, 2, 1, 3}; // not in use
        
        for (int i  = 0; i < asteroids_array.Length; i++) {
            GameObject a = Instantiate(planet_001Prefab);
            a.transform.position = spawnPosition;
        
            Destroy(a, 3);

            // wait for 3 seconds
        }
    }
}

public class Translate : MonoBehaviour
{
    public float speed = 10.0f;

    // Update is called once per frame
    void Update()
    {
        moveAsteroid(new Vector2(-1, 0));
    }
    
    void moveAsteroid(Vector2 direction)
    {
        transform.Translate(direction * speed * Time.deltaTime);
    }
}

我已经尝试过System.Threading.Thread.Sleep(3000);,我也尝试过用IEnumarateyield return new waitForSeconds(3.0f);构建一个计时器,但是这两个东西都不起作用,或者我没有正确地实现它。
这也许是个简单的问题,但我自己想不出来。
谢谢你的帮助:)

flmtquvp

flmtquvp1#

触发一个协程,产生3秒,然后产生资产。
这将允许执行继续计算当前帧,而您的协程并行运行。
参考:https://docs.unity3d.com/Manual/Coroutines.html
按键命令:生成返回新等待秒数(3.0f);

相关问题