Example #1
0
 public void CreatePool(string url, string prefabPath       = "", int maxCount = 1,
                        PrefabLoadMode prefabLoadMode       = PrefabLoadMode.OnUsed,
                        PrefabDestroyMode prefabDestroyMode = PrefabDestroyMode.Immediate)
 {
     string[] paras = Router.Instance.ParsePath(url);
     if (paras.Length == 1)
     {
         string spawnPoolName = paras[0];
         //若果不存在SpawnPool,那么创建SpawnPool
         if (this.spawnPools.ContainsKey(spawnPoolName) == false)
         {
             this.CreateSpawnPool(spawnPoolName);
         }
     }
     else if (paras.Length == 2)
     {
         //如果url格式正确,将包含SpawnPool的名称和PrefabPool的名称
         string spawnPoolName  = paras[0];
         string prefabPoolName = paras[1];
         //若果不存在SpawnPool,那么创建SpawnPool
         SpawnPool sp;
         if (this.spawnPools.ContainsKey(spawnPoolName))
         {
             sp = this.spawnPools[spawnPoolName];
         }
         else
         {
             sp = this.CreateSpawnPool(spawnPoolName);
         }
         //如果SpawnPool不存在该PrefabPool,那么创建PrefabPool
         if (sp.ExistPrefabPool(prefabPoolName) == false)
         {
             sp.CreatePrefabPool(prefabPoolName, prefabPath, prefabLoadMode, prefabDestroyMode, maxCount);
         }
     }
     else
     {
         //若果参数是其他情况,那么url的格式是错误的
         Debug.LogError($"Url格式错误,CreatePool失败!***{url}***");
     }
 }
Example #2
0
 /// <summary>
 /// 添加Prefab对象池
 /// </summary>
 /// <param name="name">名称</param>
 /// <param name="path">路径</param>
 public PrefabPool CreatePrefabPool(string name, string path            = "",
                                    PrefabLoadMode prefabLoadMode       = PrefabLoadMode.OnUsed,
                                    PrefabDestroyMode prefabDestroyMode = PrefabDestroyMode.Immediate, int maxCount = 1)
 {
     if (prefabPools.ContainsKey(name) == false)
     {
         var go = new GameObject(name);
         go.transform.parent = this.transform;
         var p = go.AddComponent <PrefabPool>();
         //初始化prefabPool参数
         p.path        = path;
         p.loadMode    = prefabLoadMode;
         p.destroyMode = prefabDestroyMode;
         p.maxCount    = maxCount;
         //添加入pools
         prefabPools.Add(p.name, p);
         return(p);
     }
     else
     {
         return(prefabPools[name]);
     }
 }