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

Unity中如何将实例化GameObject作为父对象子元素存入Queue队列

Unity实例化GameObject设置父对象并存入Queue的实现方案

你只需要在实例化对象后调用transform.SetParent()方法绑定父节点,再存入队列即可,修改方案如下:

  • 首先在你的脚本类中声明父对象引用,后续可在Inspector面板直接拖拽指定要作为父节点的游戏对象
// 声明父对象引用,Inspector拖拽赋值即可
public Transform targetParent;
// 提前声明对应类型的队列,避免类型转换报错
private Queue<GameObject> warriorsQ = new Queue<GameObject>();
  • 修改你的SpawnSolders方法,实例化对象后先设置父节点再入队:
void SpawnSolders()
{
    for (int i = 0; i < warriorsCount; i++)
    {
        if (isOcupied[i] == false)
        {
            isOcupied[i] = true;
            // 第一步:实例化生成对象
            GameObject newWarrior = Instantiate(war1, battlePositions[i].position, transform.rotation);
            // 第二步:设置父对象,第二个参数控制是否保留世界坐标,不需要保留传false即可避免位置偏移
            newWarrior.transform.SetParent(targetParent, false);
            // 第三步:存入队列
            warriorsQ.Enqueue(newWarrior);
        }
    }
}

补充说明:SetParent方法的第二个参数worldPositionStays如果设为true,生成的对象会保留实例化时传入的世界坐标,不会因为绑定父节点发生位置变化;如果设为false,对象会适配父节点的坐标系,继承父节点的缩放、旋转属性,适合UI元素、同场景下的单位对象使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:24:08