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}***"); } }
/// <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]); } }