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

Unity中如何实现按Q键逐个生成克隆体?解决批量生成异常

问题分析与解决方案

你的代码核心问题是销毁的是挂载脚本的原始对象,而非生成的克隆体:

  • 每次按Q,Instantiate(gameObject)会生成克隆体,但Destroy(gameObject, 2)是让原对象2秒后销毁。
  • 若在原对象销毁前连续按Q,原对象还存在,会不断生成克隆体,但这些克隆体没有被绑定销毁逻辑,所以会一直保留,导致数量越来越多。

修正后的代码

推荐使用预制体来克隆(更安全,避免误删原对象):

public Transform spawnpos; // 球体生成的位置
public GameObject spherePrefab; // 拖拽你的球体预制体到这里

void Update()
{
    if (Input.GetKeyDown(KeyCode.Q))
    {
        // 生成克隆体并保存引用
        GameObject clonedSphere = Instantiate(spherePrefab, spawnpos.position, spawnpos.rotation);
        // 对克隆体执行2秒后销毁的逻辑
        Destroy(clonedSphere, 2);
    }
}

如果一定要克隆挂载脚本的自身对象,修改如下(不推荐,原对象若意外销毁会无法继续生成):

public Transform spawnpos;

void Update()
{
    if (Input.GetKeyDown(KeyCode.Q))
    {
        GameObject clone = Instantiate(gameObject, spawnpos.position, spawnpos.rotation);
        Destroy(clone, 2);
        // 移除销毁原对象的代码,否则原对象消失后无法再生成克隆体
    }
}

效果说明

修改后,每按一次Q就生成一个球体,每个球都会在2秒后自动销毁,按10次Q就会生成10个独立的球体,各自按时消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:09:45