unity3d 如何将运行时示例化的预置设置为另一个运行时预置的父代?

ix0qys7i  于 2022-12-04  发布在  其他
关注(0)|答案(1)|浏览(161)

我们目前在Unity中遇到了一个问题,我们正在尝试开发一个灵活的UI,其中“MainCanvas”由运行时预制件组成。
我们已经可以示例化场景中游戏对象的父代运行时预置。但是我们希望父代也是一个示例化的预置。
这是可能的,使这在某种程度上工作或有任何其他替代方案,我们应该考虑。
感谢之前的手给任何人阅读这篇文章!
我们已经尝试过实现给定的示例,但它总是在控制台中返回错误。
遗憾的是,我们已经在程序中做了一些更改,所以我们不能真正重新创建错误消息,但如果有人感兴趣,我们可以恢复并截图。
感谢任何再次阅读这篇文章的人,我们希望找到解决方案:)

pprl5pva

pprl5pva1#

1.存储父示例的引用
1.使用Instantiate(Object original, Vector3 position, Quaternion rotation, Transform parent)方法示例化父示例下的第二个预制件示例
下面是我的测试代码,运行良好:

public class PrefabParentTest : MonoBehaviour
{
    [SerializeField] private GameObject _prefab1;
    [SerializeField] private GameObject _prefab2;
    void Start()
    {
        var instance1 = Instantiate(_prefab1, Vector3.zero, Quaternion.identity);
        var instance2 = Instantiate(_prefab2, Vector3.zero, Quaternion.identity, instance1.transform);
    }
}

或者,您可以使用Transform.SetParent(不建议作为第一个)来实现相同的目标:

void Start()
 {
        var instance1 = Instantiate(_prefab1, Vector3.zero, Quaternion.identity);
        var instance2 = Instantiate(_prefab2, Vector3.zero, Quaternion.identity);
        instance2.transform.SetParent(instance1.transform);
 }

参考文献:

相关问题