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

Unity 2D无尽跑酷如何实现自动停用已超过平台的销毁器功能

问题根因

你遇到的功能失效问题核心来自两个常见的操作错误:

  • 你直接将预制体资源拖入了objs列表,而非运行时生成的平台实例。修改预制体的激活状态后,后续基于该预制体生成的新实例会默认继承非激活状态,看起来就是处理完第一个同类平台后功能就失效了。
  • 你没有将运行时动态生成的平台实例添加到objs列表中,列表仅包含初始的几个对象,处理完成后就没有新对象可以检测了。

你之前写的while循环导致Unity崩溃,是因为没有加等待逻辑,死循环会占满主线程直接卡住程序。

修复步骤

  1. 先清空Inspector面板中objs列表里的所有预制体资源,不要直接拖预制体进入列表。
  2. 修改你的平台生成代码,每次实例化新平台后,将生成的实例添加到objs列表中,示例逻辑如下:
// 你原来生成平台的逻辑
GameObject newPlatform = Instantiate(你的平台预制体, 生成坐标, Quaternion.identity);
// 新增这行,把新生成的实例加入检测列表
FindObjectOfType<DistruttoreLivelli>().objs.Add(newPlatform);
  1. 替换原有DistruttoreLivelli脚本的代码,优化检测逻辑避免性能浪费,修复后的代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DistruttoreLivelli : MonoBehaviour
{
    public List<GameObject> objs = new List<GameObject>();
    // 检测间隔,2D跑酷0.1秒检测一次完全足够,不用每帧遍历
    public float checkInterval = 0.1f;

    void Start()
    {
        StartCoroutine(CheckPlatforms());
    }

    IEnumerator CheckPlatforms()
    {
        // 循环检测,每次检测完等待指定间隔,不会造成死循环崩溃
        while (true)
        {
            // 倒序遍历,后续要移除元素也不会出现索引错乱
            for (int i = objs.Count - 1; i >= 0; i--)
            {
                // 空引用保护,避免对象意外销毁报错
                if (objs[i] == null)
                {
                    objs.RemoveAt(i);
                    continue;
                }
                // 已经非激活的平台直接跳过,不用重复处理
                if (!objs[i].activeSelf) continue;

                if (objs[i].transform.position.x < transform.position.x)
                {
                    objs[i].SetActive(false);
                    // 如果你不需要复用这个平台,可取消注释下面的代码直接从列表移除,减少遍历压力
                    // objs.RemoveAt(i);
                }
            }
            yield return new WaitForSeconds(checkInterval);
        }
    }
}

补充说明

如果你要做平台对象池复用非激活的平台,不要移除列表中的非激活元素即可,代码已经做了跳过处理,不会影响性能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:06:07