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

在prefab内部实例化对象,如何销毁挂载脚本GameObject时同步销毁生成实例

实现方案

你只需要给生成的预制体实例指定父节点为当前脚本挂载的GameObject即可,Unity的Instantiate接口自带父节点参数重载,修改后的代码如下:

void Start() {
    index = Random.Range (0, Obstacles.Length);
    ChosenPrefab = Obstacles[index];
    // 最后一个参数传入当前对象的transform作为父节点
    Instantiate(ChosenPrefab, transform.position + offset, Quaternion.identity, transform);
}

原理解释

  • 生成的预制体实例会自动成为当前GameObject的子物体,Unity默认会在父物体销毁时同步销毁所有子物体,完全满足你的需求
  • 如果后续需要操作生成的实例,也可以先接住实例引用再手动设置父级,写法如下:
void Start() {
    index = Random.Range (0, Obstacles.Length);
    ChosenPrefab = Obstacles[index];
    GameObject spawnedObstacle = Instantiate(ChosenPrefab, transform.position + offset, Quaternion.identity);
    // 第二个参数为true代表保留实例的世界坐标属性,不会因为挂载父节点发生位移
    spawnedObstacle.transform.SetParent(transform, true);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:36:03