Unity中销毁原GameObject而非克隆体问题求助
问题分析与修复方案
你的代码核心错误是激活了原物体Pt而非克隆出来的clone,若Pt是场景内的物体而非预制体,后续操作极易混淆原物体与克隆体,最终导致原物体被错误销毁。
代码修正步骤
- 替换激活逻辑:把
Pt.gameObject.SetActive(true)改为激活克隆体clone.SetActive(true) - 确认
Pt是预制体:如果Pt是场景中已存在的物体,克隆后原物体的状态变更会干扰逻辑,建议改用预制体作为克隆源
修正后的完整代码:
if (AttackChoice == 2) { MaxedOut(); gameObject.GetComponentInChildren<Renderer>().material.color = Color.white; var clone = Instantiate(Pt, portalSpawn.position, Quaternion.identity); _clones.Add(clone); clone.transform.parent = null; // 激活克隆体,而非原物体 clone.SetActive(true); yield return new WaitForSeconds(10); Destroy(clone); gameObject.GetComponentInChildren<Renderer>().material.color = originalColor; }
额外检查项
- 确认
_clones列表仅添加克隆体clone,未误加入原物体Pt - 若克隆体默认是激活状态,可省略
clone.SetActive(true)这一步
内容的提问来源于stack exchange,提问作者seemtheboy
相关产品推荐
相关产品推荐

