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

Unity开发点击销毁单个方块时全部方块被销毁的问题如何解决

问题根因
  • 你将该脚本挂载到了每一个可销毁方块上,现有逻辑会让所有方块的Update函数同步监听鼠标点击事件:只要射线检测到任意碰撞体存在,所有挂载了该脚本的方块都会直接隐藏自身,因此会出现单次点击销毁多个方块的异常。
修复方案

仅需在射线命中判断中增加校验,确认命中的碰撞体属于当前脚本挂载的方块时,再执行隐藏逻辑即可,修正后代码如下:

using UnityEngine;

public class DestroyObjectOnClick : MonoBehaviour
{
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            Vector2 mousePos2D = new Vector2(mousePos.x, mousePos.y);
            RaycastHit2D hit = Physics2D.Raycast(mousePos2D, Vector2.zero);
            if (hit.collider != null && hit.collider.gameObject == gameObject)
            {
               gameObject.SetActive(false);
            }
        }
    }
}
优化建议
  • 若场景中方块数量较多,每个方块单独执行Update检测会产生不必要的性能开销,可以将该脚本统一挂载到全局管理对象上,点击时直接销毁射线命中的方块即可,无需为每个方块单独挂载脚本。
  • 销毁逻辑可以根据需求替换为Destroy(gameObject),如果后续不需要复用该方块对象的话。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:27:04