// для предварительного создания пулов
        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);
            }
        }
Пример #2
0
        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);
        }