【Unity】判断对象是否在预览场景(Prefab Mode中用于编辑Prefab的场景)中
如果对象在预览场景(Prefab Mode中用于编辑Prefab的场景)中,下面的方法会返回 true
;
如果对象位于常规场景或者Project窗口中,下面的方法会返回 false
。
UnityEditor.SceneManagement.EditorSceneManager.IsPreviewSceneObject(Object obj);
还有另一种方法,就是获取当前的Prefab编辑状态。如果能获取到状态对象,说明编辑器正处于Prefab Mode,如果获取不到状态对象,说明编辑器没有处于Prefab Mode。可以借此判断对象是否处于预览场景中,但要注意一点:有可能当前正在编辑一个Prefab但这个Prefab不是你想判断的那个对象。
var prefabStage = UnityEditor.Experimental.SceneManagement.PrefabStageUtility.GetCurrentPrefabStage();
if (prefabStage != null)
{
// 当前正处于 Prefab Mode
// 可以对比目标对象是否与 prefabStage.prefabContentsRoot 相同
}
else
{
// 当前没有处于Prefab Mode
}