static public void Initialize() { Debug.Log("Initialize ObjectPoolManager"); _initialized = true; GameObject core = new GameObject(); core.name = "ObjectPoolManager"; core.hideFlags = HideFlags.HideAndDontSave; _instance = core.AddComponent <ObjectPoolManager>(); GameObject.DontDestroyOnLoad(core); _pools = new Dictionary <string, ObjectPool>(); }
public ObjectPool(ObjectPoolManager p_manager, int p_initialSize, GameObject p_objectPrototype, bool p_dontDestroyOnLoad) { if (p_objectPrototype == null) { throw new System.Exception("Cannot use null as pool prototype."); } _manager = p_manager; _initialSize = p_initialSize; objectPrototype = p_objectPrototype; dontDestroyOnLoad = p_dontDestroyOnLoad; _freeStack = new Stack <GameObject>(); _usedPool = new List <GameObject>(); for (int i = 0; i < _initialSize; ++i) { CreateInstance(); } }