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

Unity 2D触摸触发物体替换时重复克隆大量相同物体问题

2D Unity项目触发破损物体时重复生成克隆对象问题截图

问题说明

开发Unity 2D游戏过程中,需要将场景内的破损桌子替换为完好版本,但触摸触发替换逻辑后,完好桌子会在背景区域重复生成多次,原实现代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ReplaceObjects : MonoBehaviour
{
    public GameObject Broken_Table;
    public GameObject Table;
    private bool used = false;

    void Start()
    {

    }

    void Update()

    {

        if (Input.touchCount > 0)
        {
            GameObject broken_Table = Instantiate(Broken_Table) as GameObject;
            GameObject table = Instantiate(Table) as GameObject;
            Replace(broken_Table, table);
            used = true;
        }

    }
    void Replace(GameObject obj1, GameObject obj2)
    {

        Instantiate(obj2, obj1.transform.position, obj1.transform.rotation);
        Destroy(obj1);

    }
}
问题根因

代码存在4处逻辑错误,直接导致重复生成问题:

  • 定义的used状态标记完全没做拦截判断,只要屏幕存在触摸,Update每帧都会执行生成逻辑,触摸持续的数十帧内会批量生成冗余对象
  • 未做触摸阶段校验,只要手指按在屏幕上,不管是刚按下、持续按住还是抬起阶段都会触发逻辑,没有限定为单次触摸触发
  • 存在重复实例化逻辑:Update中已经实例化了破损桌子、完好桌子各1次,调用Replace方法时又额外实例化1次完好桌子,单次触发就会生成3个冗余对象
  • 未做触摸命中检测:只要屏幕有任意触摸就触发逻辑,完全没校验触摸位置是否点中了破损桌子,生成的对象会出现在默认坐标也就是背景区域。
修复实现
  1. 前置配置:给场景内的破损桌子添加2D碰撞体组件,给主相机添加Physics 2D Raycaster组件,将修复后的脚本挂在破损桌子对象上,在Inspector面板拖入完好桌子的预制体引用。
  2. 核心逻辑调整:加单次触发拦截、去掉多余实例化、用点击/触摸命中检测判定是否点中目标物体,替换时直接在当前破损桌子坐标生成完好桌子后销毁自身即可。

修复后代码:

using UnityEngine;

public class ReplaceObjects : MonoBehaviour
{
    public GameObject intactTable;
    private bool _hasReplaced = false;

    // 触摸/点击命中当前物体时触发
    void OnMouseDown()
    {
        // 已经完成替换就直接返回,避免重复执行
        if (_hasReplaced) return;
        
        // 在当前破损桌子的位置和旋转角度生成完好桌子
        Instantiate(intactTable, transform.position, transform.rotation);
        // 销毁当前破损桌子
        Destroy(gameObject);
        // 标记已替换状态
        _hasReplaced = true;
    }
}

如果需要适配移动端多点触控的特殊逻辑,可将触发逻辑改到Update中,判断触摸阶段为TouchPhase.Began时发射2D射线,检测命中当前破损桌子后再执行替换即可,核心要保留单次触发拦截逻辑,禁止每帧重复执行实例化操作。

内容的提问来源于stack exchange,提问作者Jaafar Ben Bouker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:48:11