【问题标题】:How can I get a GameObject root prefab?如何获得 GameObject 根预制件?
【发布时间】:2019-04-05 03:18:13
【问题描述】:

我有一个 EditorWindow 脚本。

OnGUI 内部:

for (var i = selection.Count - 1; i >= 0; --i)
            {
                var selected = selection[i];

                if (UnityEditor.PrefabUtility.IsPartOfPrefabInstance(selected))
                {
                    var root = selected.GetComponentInParent(typeof(GameObject));
                    PrefabUtility.UnpackPrefabInstance(selected, PrefabUnpackMode.Completely, UnityEditor.InteractionMode.AutomatedAction);
                }
             }

我想找到所选的预制件。 但这给了我一个例外:

ArgumentException: GetComponent 要求请求的组件“GameObject”派生自 MonoBehaviour 或 Component 或者是一个接口。

主要目标是销毁作为预制实例一部分的游戏对象。 为此,我首先需要找到游戏对象(已选择)它是预制的,然后将其从预制中解压缩,然后将其销毁。

但我无法得到它的预制件。

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    一个可行的解决方案:

    for (var i = selection.Count - 1; i >= 0; --i)
                {
                    var selected = selection[i];
    
                    if (UnityEditor.PrefabUtility.IsPartOfPrefabInstance(selected))
                    {
                        var root = PrefabUtility.GetOutermostPrefabInstanceRoot(selected);
                        PrefabUtility.UnpackPrefabInstance(root, PrefabUnpackMode.Completely, UnityEditor.InteractionMode.AutomatedAction);
                    }
                }
    

    【讨论】:

      猜你喜欢
      • 2015-01-25
      • 1970-01-01
      • 1970-01-01
      • 2021-07-23
      • 2019-12-04
      • 1970-01-01
      • 1970-01-01
      • 2021-05-14
      • 1970-01-01
      相关资源
      最近更新 更多