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
相关产品推荐
相关产品推荐

