public PoolGameObject AddPoolNewTypeObject(string prefabTag, bool isLog = false) { GameObject newGO = null; if (!m_collectionPoolPrefabsStr.ContainsKey(prefabTag)) { prefabTag = TypePoolPrefabs.PoolFloor.ToString(); Debug.Log("############ AddPoolNewTypeObject Not prefab in collection for prefabTag=" + prefabTag); } GameObject prefabPoolInst = m_collectionPoolPrefabsStr[prefabTag]; if (prefabPoolInst == null) { Debug.Log("####### AddPoolNewTypeObject prefabPoolInst == null " + prefabTag); } newGO = SaveLoadData.CopyGameObject(prefabPoolInst); PoolGameObject poolObj = new PoolGameObject(); poolObj.Name = "GameObjectPool " + indexPool++; poolObj.Tag = prefabTag; poolObj.Init(newGO); poolObj.Deactivate(); //Fix Tile field bool isField = false; isField = TypePoolPrefabs.PoolFloor.ToString() == prefabTag; if (isField) { //see: GetPrefabField ModelNPC.TerraData terrD = new ModelNPC.TerraData() { ModelView = "Weed" }; //Update texture Object pool Field default terrD.UpdateGameObject(newGO); } var stackPool = new Stack <PoolGameObject>(); if (!PoolGamesObjectsStack.ContainsKey(prefabTag)) { PoolGamesObjectsStack.Add(prefabTag, stackPool); } else { stackPool = PoolGamesObjectsStack[prefabTag]; } //int countInPool = PoolGamesObjectsStack[prefabTag].Count; stackPool.Push(poolObj); return(poolObj); }