You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中C#如何在for循环内延迟指定秒数生成小行星

Unity实现点击按钮间隔生成小行星的正确方法

为什么你之前的方法行不通

  • System.Threading.Thread.Sleep(3000)会卡死Unity主线程,整个游戏会强制暂停3秒,完全无法正常运行,绝对不能用这个方式。
  • 直接在ShowJourney里写yield return无效,因为只有标记为IEnumerator的方法才能作为协程,而且协程必须通过StartCoroutine启动,不能直接当成普通方法调用。

修改后的代码实现

把你的ButtonSkript改成下面这样,核心是用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 OnGenerateAsteroidsClicked()
    {
        // 启动协程执行间隔生成逻辑
        StartCoroutine(GenerateAsteroidsCoroutine());
    }

    // 协程方法,负责处理间隔生成
    private IEnumerator GenerateAsteroidsCoroutine()
    {
        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;
        
            // 这里建议不要固定销毁时间,可根据移动速度计算实际移出屏幕的时间
            // 比如speed=10,从x=15到屏幕左边界x=-10的距离是25,时间=25/10=2.5秒,可写Destroy(a, 2.5f);
            Destroy(a, 3);

            // 最后一个小行星生成后不需要等待
            if (i != asteroids_array.Length - 1)
            {
                // 等待3秒再生成下一个
                yield return new WaitForSeconds(3.0f);
            }
        }
    }
}

关键注意点

  1. 按钮绑定:把按钮的OnClick事件绑定到OnGenerateAsteroidsClicked方法,不要直接绑协程方法。
  2. 协程启动:通过StartCoroutine启动协程,Unity会在后台处理等待逻辑,不会阻塞游戏主线程。
  3. 销毁时间优化:固定Destroy(a, 3)可能不符合实际移动逻辑,你可以根据小行星移动速度和屏幕边界计算准确的销毁时间,确保小行星刚移出屏幕就被销毁。
  4. 时间缩放兼容:如果你的游戏会修改Time.timeScale(比如暂停功能),WaitForSeconds会跟着暂停,这时可以改用WaitForSecondsRealtime(3.0f),不受时间缩放影响。

你的Translate类逻辑无需修改,小行星会正常向左移动。

内容的提问来源于stack exchange,提问作者Dominik4362

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 21:05:16