/// <summary>
        /// 向对象池中添加一种预设类型
        /// </summary>
        /// <param name="assetBundleName"></param>
        /// <param name="assetName"></param>
        /// <param name="prefabInfo"></param>
        public void PushPrefab(string assetBundleName, string assetName, PoolPrefabInfo prefabInfo = default(PoolPrefabInfo))
        {
            if (HasPrefab(assetName))
            {
#if UNITY_EDITOR
                Debug.Log(string.Format("{0} 已经存在", assetName));
#endif
                return;
            }

            if (prefabInfo.Prefab == null)
            {
                prefabInfo.Prefab = GameModuleProxy.GetModule <ResourceManager>().LoadAsset <GameObject>(assetBundleName, assetName);
                if (prefabInfo.Prefab == null)
                {
#if UNITY_EDITOR
                    Debug.LogError("预设资源为null: " + assetName);
#endif
                    return;
                }

                _prefabs[assetName]      = prefabInfo;
                _spawnPrefabs[assetName] = new List <GameObject>();

                Initialization(assetName, prefabInfo);
            }
        }
        private void Initialization(string assetName, PoolPrefabInfo prefabInfo)
        {
            var objects = new Queue <GameObject>();

            for (var i = 0; i < prefabInfo.PreloadAmount; i++)
            {
                var obj = GameObject.Instantiate(prefabInfo.Prefab);
                obj.transform.SetParent(transform);
                obj.SetActive(false);
                objects.Enqueue(obj);
            }
            _despawneds[assetName] = objects;
        }
        public void AddPrefab(string assetBundleName, string assetName, PoolPrefabInfo prefabInfo)
        {
            if (_prefabs.ContainsKey(assetName))
            {
                Debug.Log("已经存在资源:" + assetName);
                return;
            }
            if (prefabInfo.Prefab == null)
            {
                //根据assetName,直接从ResourceManager里面加载
                prefabInfo.Prefab = GameFrameworkMode.GetModule <ResourceManager>().LoadAsset <GameObject>(assetBundleName, assetName);
                if (prefabInfo.Prefab == null)
                {
                    Debug.Log("预设资源为null:" + assetName);
                    return;
                }
            }
            _prefabs[assetName]  = prefabInfo;
            _spawneds[assetName] = new List <GameObject>();

            Initialization(assetName, prefabInfo);
        }
Esempio n. 4
0
 /// <summary>
 /// 加载预设信息
 /// </summary>
 /// <param name="assetName"></param>
 /// <param name="prefabInfo"></param>
 public void AddPrefab(string assetName, PoolPrefabInfo prefabInfo)
 {
     _gameObjectPoolHelper.AddPrefab(assetName, prefabInfo);
 }
Esempio n. 5
0
 /// <summary>
 /// 加载预设信息
 /// </summary>
 /// <param name="assetbundlename"></param>
 /// <param name="assetname"></param>
 /// <param name="poolPrefabInfo"></param>
 public void LoadPrefabInfo(string assetbundlename, string assetname, PoolPrefabInfo poolPrefabInfo)
 {
     _gameObjectPoolHelper.PushPrefab(assetbundlename, assetname, poolPrefabInfo);
 }