public bool Init(QObjCreator <T> creator, QObjCreatorFactory <T> creatorFactory = null) { FreeCount = 0; TotleCount = 0; m_creator = creator; m_creatorFactory = creatorFactory; return(Resize()); }
//public void Realse() //{ // if (BAK_CREATOR == null) // { // Debug.LogError("QObjPool 的备份对象生成器为null"); // return; // } // for (int i = 0; i < FreeCount; i++) // { // T obj = m_pool.Dequeue(); // BAK_CREATOR.RealseObject(obj); // } // FreeCount = 0; // BAK_CREATOR = null; // m_creator = null; // m_creatorFactory = null; //} /// <summary> /// 按指定对象个数释放,当leftCout == 0 时表示整个pool的对象都释放 /// </summary> /// <param name="count"></param> /// <param name="leftCout"></param> public void Realse(int count, out int leftCout) { if (BAK_CREATOR == null) { Debug.LogWarning("QObjPool 的备份对象生成器为null"); leftCout = FreeCount; return; } int realseCount = Mathf.Min(count, FreeCount); for (int i = 0; i < realseCount; i++) { T obj = m_pool.Dequeue(); BAK_CREATOR.RealseObject(obj); FreeCount--; } leftCout = FreeCount; if (FreeCount <= 0) { m_pool = null; BAK_CREATOR.Realse(); BAK_CREATOR = null; if (m_creator != null) { m_creator.Realse(); m_creator = null; } if (m_creatorFactory != null) { m_creatorFactory.Realse(); m_creatorFactory = null; } } }
private T [] CreatObjects(QObjCreator <T> creator, QObjCreatorFactory <T> creatorFactory) { T [] objs = null; if (creator != null) { m_creator = creator; BAK_CREATOR = creator; objs = m_creator.CreateObjects(); } else if (creatorFactory != null) { QObjCreator <T> _creator = creatorFactory.CreatCreator(); BAK_CREATOR = _creator; objs = _creator.CreateObjects(); } else { objs = null; } return(objs); }