public static GameObject GetScenePrefabInstance(Scene scene, int id) { UnityPlayModeSaverSceneUtils prefabIndexer = GetPrefabIndexer(scene); if (prefabIndexer != null) { return(prefabIndexer.GetScenePrefabInstance(id)); } return(null); }
public static bool IsScenePrefabInstance(Object obj, Scene scene, out GameObject prefab, out int id) { UnityPlayModeSaverSceneUtils prefabIndexer = GetPrefabIndexer(scene); if (prefabIndexer != null) { return(prefabIndexer.IsScenePrefabInstance(obj, out prefab, out id)); } prefab = null; id = -1; return(false); }
private static UnityPlayModeSaverSceneUtils GetPrefabIndexer(Scene scene) { foreach (GameObject rootObject in scene.GetRootGameObjects()) { UnityPlayModeSaverSceneUtils prefabIndexer = rootObject.GetComponentInChildren <UnityPlayModeSaverSceneUtils>(); if (prefabIndexer != null) { return(prefabIndexer); } } return(null); }
public static void CacheScenePrefabInstances(Scene scene) { UnityPlayModeSaverSceneUtils prefabIndexer = GetPrefabIndexer(scene); if (prefabIndexer == null) { GameObject gameObject = new GameObject("Prefab Indexer", typeof(UnityPlayModeSaverSceneUtils)) { hideFlags = HideFlags.HideInHierarchy | HideFlags.HideInInspector | HideFlags.NotEditable }; SceneManager.MoveGameObjectToScene(gameObject, scene); prefabIndexer = gameObject.GetComponent <UnityPlayModeSaverSceneUtils>(); } prefabIndexer.BuildScenePrefabMap(); }