// для предварительного создания пулов public void InstantiateToPool(string assetId, int count) { GameObject prefabReference = assetReferences.PrefabReference(assetId); if (prefabReference == null) { AssetInfo assetInfo = assetDatabase.GetAssetInfo(assetId); if (assetInfo == null) { Debug.LogError("Нет информации об ассете в базе " + assetId); return; } prefabReference = assetLoader.LoadAsset <GameObject>(assetInfo); if (prefabReference == null) { return; } assetReferences.AddPrefabReference(assetId, prefabReference); } for (int i = 0; i < count; i++) { GameObject instantiated = assetInstantiator.InstantiatedDeactivatedGameObject(assetId, prefabReference, assetPool.transform); assetPool.AddToPool(assetId, instantiated); } }
public GameObject GetAssetInactive(string assetId) { Queue <GameObject> pooledObjects; if (pooledAssets.TryGetValue(assetId, out pooledObjects)) { while (pooledObjects.Count > 0) { GameObject dequeue = pooledObjects.Dequeue(); if (dequeue != null) { return(dequeue); } } GameObject prefabReference = assetReferences.PrefabReference(assetId); if (prefabReference != null) { GameObject instantiatedGameObject = assetInstantiator.InstantiatedDeactivatedGameObject(assetId, prefabReference, transform); return(instantiatedGameObject); } } return(null); }