//maxCount <= 0 不限制大小 public void InitPool(string poolName, Transform parent, GameObject prefab, int maxCount, int initCount, IGameObjectPoolStrategy strategy = null) { if (m_Prefab != null) { Log.e("Already Init GameObjectPool."); return; } if (prefab == null) { return; } m_Strategy = strategy; if (m_Strategy == null) { m_Strategy = DefaultPoolStrategy.S; } m_PoolName = poolName; GameObject container = new GameObject(m_PoolName); m_Root = container.transform; m_Root.SetParent(parent); m_Strategy.ProcessContainer(container); m_Prefab = prefab; //Prefab 自己玩去 //m_Prefab.transform.SetParent(m_Root, true); if (maxCount > 0) { m_MaxCount = Mathf.Max(1, maxCount); initCount = Mathf.Min(maxCount, initCount); } else { m_MaxCount = maxCount; } if (initCount > 0) { for (int i = 0; i < initCount; ++i) { Recycle(CreateNewGameObject()); } } }
public void InitPool(string name, GameObject prefab, Transform parentTrans, int maxCount, int initCount, IGameObjectPoolStrategy strategy = null) { m_CacheStack = new Stack <GameObject>(); if (m_Prefab != null) { Log.E("Already exist {" + name + "}Pool."); return; } if (prefab == null) { return; } m_PoolName = name; m_Prefab = prefab; GameObject container = new GameObject(m_PoolName); GameObject go = GameObject.Instantiate(container); m_Root = go.transform; if (parentTrans != null) { m_Root.SetParent(parentTrans); } m_Strategy = strategy; if (m_Strategy == null) { m_Strategy = DefaultPoolStrategy.S; } m_Strategy.ProcessContainer(container); GameObject.DestroyImmediate(container); if (maxCount > 0) { m_MaxCount = Mathf.Max(1, maxCount); initCount = Mathf.Min(maxCount, initCount); } if (initCount > 0) { for (int i = 0; i < initCount; i++) { Recycle(CreateNewGameObject()); } } }
public GameObjectPool CreatePool(string poolName, GameObject prefab, int maxCount, int initCount, IGameObjectPoolStrategy strategy = null) { GameObjectPool pool = new GameObjectPool(); pool.InitPool(poolName, transform, prefab, maxCount, initCount, strategy); return(pool); }
public GameObjectPoolGroup CreatePoolGroup(IGameObjectPoolStrategy strategy = null) { GameObjectPoolGroup group = new GameObjectPoolGroup(transform, strategy); return(group); }
public GameObjectPoolGroup(Transform parent, IGameObjectPoolStrategy strategy = null) { m_Parent = parent; m_Strategy = strategy; }