首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将at运行时实例化的prefab设置为另一个运行时prefab的父级?

如何将at运行时实例化的prefab设置为另一个运行时prefab的父级?
EN

Stack Overflow用户
提问于 2022-11-30 07:40:17
回答 1查看 28关注 0票数 0

我们目前面临的一个问题是,我们正在努力开发一个灵活的UI,其中的"MainCanvas“由运行时预制板组成。

我们已经可以将运行时预编程序集实例化为场景中存在的GameObject的父级。但是我们希望父程序也是一个实例化的预制件。

这是肯定的,使这在某种程度上起作用,或有任何其他的选择,我们应该研究。

感谢所有阅读这篇文章的人!

我们已经尝试实现给定的示例,但是它总是在控制台中返回一个错误。

可悲的是,我们已经在程序中做了一点改变,所以我们不能真正地重新创建错误消息,但是如果有人被破坏了,我们可以恢复并截图。

感谢再次阅读这篇文章的人,我们希望找到一个解决办法:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-30 07:53:06

  1. 存储父实例的引用
  2. 使用Instantiate(Object original, Vector3 position, Quaternion rotation, Transform parent)方法实例化父实例

下面的sceond预置实例

这是我的测试代码,工作正常:

代码语言:javascript
复制
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 (不推荐作为第一个)来实现相同的目标:

代码语言:javascript
复制
 void Start()
 {
        var instance1 = Instantiate(_prefab1, Vector3.zero, Quaternion.identity);
        var instance2 = Instantiate(_prefab2, Vector3.zero, Quaternion.identity);
        instance2.transform.SetParent(instance1.transform);
 }

参考文献:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74624301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档