public virtual IPrefabComponent Spawn(PrefabType type, Vector3 position, Quaternion rotation) { IPrefabComponent prefab; #if UNITY_EDITOR // if not playing, use the prefab mode if (!Application.isPlaying) { var prefabgo = this.InstantiateSafe(_prefabs[(int)type], position, rotation); prefab = prefabgo.GetComponent <IPrefabComponent>(); } else { #endif // if playing, use the pools prefab = PrefabManagerPoolSystem.Get(type, position, rotation); #if UNITY_EDITOR } #endif prefab.SetPrefabType(type); if (OnSpawn != null) { OnSpawn(prefab); } return(prefab); }
public virtual void Return(IPrefabComponent prefab) { #if UNITY_EDITOR // if not playing, use the prefab mode if (!Application.isPlaying) { this.DestroySafe(prefab.gameObject); } else { #endif // if playing, use the pools PrefabManagerPoolSystem.Return(prefab); #if UNITY_EDITOR } #endif }
private void Awake() { PrefabManagerPoolSystem.InitAllPools(_initialInstanceCount); }