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

Unity中如何延迟销毁GameObject?需延迟Destroy代码执行2秒

Unity中延迟2秒销毁敌人的实现方案

有两种简单的方式可以实现延迟2秒执行Destroy的需求:

方法一:使用Destroy的重载方法

Unity的Destroy函数本身支持传入第二个参数作为延迟时间,直接修改销毁语句即可,这是最简洁的实现方式:

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

public class enemyDestroyer : MonoBehaviour
{
    private float bounceSpeed = 13f;
    private void OnTriggerEnter2D(Collider2D collision){
        if (collision.gameObject.CompareTag("Enemy")){
            GetComponent<Rigidbody2D>().velocity = Vector2.up * bounceSpeed;
            
            // 延迟2秒销毁敌人对象
            Destroy(collision.gameObject, 2f);
        }
    }
}

方法二:使用协程(适合需要在延迟期间执行额外逻辑的场景)

如果后续需要在等待销毁的2秒内做其他操作(比如播放动画、播放音效),可以用协程来实现:

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

public class enemyDestroyer : MonoBehaviour
{
    private float bounceSpeed = 13f;
    private void OnTriggerEnter2D(Collider2D collision){
        if (collision.gameObject.CompareTag("Enemy")){
            GetComponent<Rigidbody2D>().velocity = Vector2.up * bounceSpeed;
            
            // 启动协程,延迟销毁敌人
            StartCoroutine(DestroyEnemyAfterDelay(collision.gameObject, 2f));
        }
    }

    private IEnumerator DestroyEnemyAfterDelay(GameObject enemy, float delay)
    {
        // 等待指定时长
        yield return new WaitForSeconds(delay);
        // 执行销毁
        Destroy(enemy);
    }
}

两种方法都能满足需求,如果你只需要单纯的延迟销毁,优先用方法一;如果有额外的逻辑要在延迟期间处理,选择方法二更灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 23:53:15