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

Unity销毁对象时崩溃求助(附自定义Attack脚本)

问题分析与修复方案

核心崩溃原因

你的脚本里存在死循环,这是导致Unity直接崩溃的根本原因:

  • while (timer == true) 循环内没有任何修改timer值的代码,会持续占用主线程,导致程序完全无响应。
  • 第二个while (x >= 1)同样未对x做任何修改,属于死循环。

同时还有几个关键逻辑错误:

  1. Start()里直接访问cc2但未初始化,会触发空引用异常。
  2. Collider设为isTrigger = true,却使用了针对非Trigger碰撞的OnCollisionEnter2D,应该改用OnTriggerEnter2D。
  3. 攻击逻辑放在碰撞事件里不合理,时间更新类逻辑必须在Update中处理,碰撞事件仅负责触发检测。
  4. GameObject.Find("Enemy")效率极低,且场景中有多个同名Enemy时会出错,直接使用碰撞到的对象更可靠。

修复后的脚本

using UnityEngine;

public class Attack : MonoBehaviour
{
    private CircleCollider2D cc2;
    // 攻击冷却时长
    private float attackCooldown = 3f;
    private float currentCooldown = 0f;
    private bool canAttack = true;

    private void Start()
    {
        // 初始化Collider引用
        cc2 = GetComponent<CircleCollider2D>();
        cc2.isTrigger = true;
        // 默认关闭碰撞检测,挥剑时再开启
        cc2.enabled = false;
    }

    private void Update()
    {
        // 处理冷却计时
        if (!canAttack)
        {
            currentCooldown += Time.deltaTime;
            if (currentCooldown >= attackCooldown)
            {
                canAttack = true;
                currentCooldown = 0f;
            }
        }

        // 检测鼠标左键输入,触发攻击
        if (Input.GetKeyDown(KeyCode.Mouse0) && canAttack)
        {
            canAttack = false;
            // 开启碰撞检测,模拟挥剑范围
            cc2.enabled = true;
            // 0.2秒后关闭碰撞,避免持续检测(可根据挥剑动画时长调整)
            Invoke(nameof(DisableAttackCollider), 0.2f);
        }
    }

    private void OnTriggerEnter2D(Collider2D other)
    {
        // 检测是否命中Enemy(需给Enemy对象添加Tag为"Enemy")
        if (other.CompareTag("Enemy"))
        {
            Destroy(other.gameObject);
        }
    }

    private void DisableAttackCollider()
    {
        cc2.enabled = false;
    }
}

额外优化建议

  • 给Enemy对象添加**Tag(标签)**为Enemy,用CompareTag比判断name更可靠,避免同名对象干扰。
  • 挥剑碰撞检测的开启时长可以匹配挥剑动画的时长,让逻辑更贴合视觉表现。
  • 所有帧更新相关的逻辑都放在Update中,保证Unity主线程的正常运行节奏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 00:10:29