public static void InitPool(IPoolData data) { if (!dataDictionary.ContainsKey(data.Prefab.name)) { dataDictionary.Add(data.Prefab.name, data); CreatePool(data); } }
/// <summary> /// 删除对象池 /// </summary> /// <param name="poolName">对象池名</param> /// <returns></returns> public ObjectPool DestroyPool(string poolName) { if (_poolDic.ContainsKey(poolName)) { IPoolData pool = _poolDic[poolName]; _poolDic.Remove(poolName); pool.Destroy(); GameApp.Instance.LogError($"对象池:{poolName} 删除成功"); } else { GameApp.Instance.LogError($"对象池:{poolName} 不存在"); } return(this); }
static void CreatePool(IPoolData data) { if (!poolDictionary.ContainsKey(data.Prefab.name)) { var count = data.Capacity > 0 ? data.Capacity : baseCapacity; poolDictionary.Add(data.Prefab.name, new Queue <ObjectData>()); objectGroupDictinary.Add(data.Prefab.name, new GameObject($"[POOL] {data.Prefab.name} group").transform); if (data.DontDestroy) { GameObject.DontDestroyOnLoad(objectGroupDictinary[data.Prefab.name].gameObject); } for (int i = 0; i < count; i++) { ExtendPool(data.Prefab); } } }
public void Consume(IPoolData _data) { TokenPoolData data = (TokenPoolData)_data; this._originalScale = transform.localScale; _strength = data.Strength; SetScale(); _textMesh.text = data.Strength.ToString(); _sourceTeam = data.SourceTeam; _tokenImage.color = data.SourceTeam.TeamColour; gameObject.SetActive(true); transform.SetParent(data.ParentTransform, false); }