我有一个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派生的,或者是一个接口。
主要目标是销毁作为预制实例一部分的游戏对象。 为此,我需要先找到选定的游戏对象,然后将其从预制件中拆开,然后销毁。
但是我无法得到它的预制件。
答案 0 :(得分:0)
可行的解决方案:
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);
}
}