Unity 不能在节点隐藏的时候更改子节点的父对象

描述

在 Unity 中使用物体池,在父节点进行隐藏的时候,把子物体回归到池里,即重设父对象,但此时 Unity 会报错:

Cannot set the parent of the GameObject ‘show_(Clone)’ while
activating or deactivating the parent GameObject ‘db’.

UnityEngine.Transform:SetParent(Transform, Boolean)

原因

正如提示的,Unity 限制了在显示或隐藏的时候,对子节点进行更改父对象操作。

解决

经过尝试,虽然限制了子节点的操作,但是不限制子节点的子节点,即在中间增加一个空物体来隔离,这里就可以放到池里。

当需要使用时,判断有没有中间物体存在,若无则先创建:

    public bool ShowLive(string livePath)
    {
        if (!m_Transform)
        {
            // 因为不能在禁用的时候,放回池里,所以只能通过中间空节点
            var go = new GameObject();
            m_Transform = go.transform;
            m_Transform.SetParent(transform, false);
        }
        
        return true;
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值