private void Awake() { if (projectilePool == null) { projectilePool = ObjectPoolManager.GetManager().CreatePool(ProjectileTemplate.name, ProjectileTemplate, 20); } }
void Start() { if (instance != null) { Debug.Log("Singleton violated for SoundPoolManager"); Destroy(this); } instance = this; for (int i = 0; i < ToPool.Count; i++) { List <Sound> list = new List <Sound>(); for (int x = 0; x < poolSize; x++) { GameObject go = Instantiate(ToPool[i]); list.Add(go.GetComponent <Sound>()); go.SetActive(false); go.transform.SetParent(this.transform); } UnityObjectPool <Sound> pool = new UnityObjectPool <Sound>(list.ToArray()); mapping.Add(ToPool[i].GetComponent <Sound>().Name, pool); } }
private void OnGUI() { if (GUILayout.Button("Active Object(Sphere)")) { UnityObjectPool pool = PoolManager.Instance.GetPool("Sphere"); GameObject go = pool.Get(); go.SetActive(true); } if (GUILayout.Button("Active Object(Cube)")) { UnityObjectPool pool = PoolManager.Instance.GetPool("Cube"); GameObject go = pool.Get(); go.SetActive(true); Timer.Startup(3, (t) => { pool.Recycle(go); }); } if (GUILayout.Button("Active Object(Capsule)")) { UnityObjectPool pool = PoolManager.Instance.GetPool("Capsule"); GameObject go = pool.Get(); go.SetActive(true); Timer.Startup(3, (t) => { pool.Recycle(go); }); } if (GUILayout.Button("Release Pool(Group:NoCapsule)")) { PoolManager.Instance.ReleasePoolsByGroup("NoCapsule", true); } if (GUILayout.Button("Release Pool(Group:Default)")) { PoolManager.Instance.ReleasePoolsByDefaultGroup(); } }
public void Init() { isInit = true; var hudtext = Resources.Load <GameObject>(path + "HUDText"); _HudTextPool = new UnityObjectPool(hudtext, 10); HUDText.OnComplete = RecycleText; motionTextModels.Clear(); }
/// <summary> /// 对象正在销毁 /// </summary> protected override void _OnDestroy() { ReleaseTimer(); if (pool != null) { Debug.LogWarningFormat( "有被对象池签署标记的对象没按正常流程销毁,销毁对象名称:{0},PoolName: {1}", gameObject.name, pool.poolName); pool = null; } }
public T GetObject <T>(string prefabName) where T : UnityEngine.Object { if (!pools.ContainsKey(prefabName)) { string TargetPath = string.Format("{0}/{1}/{2}", resourceManager.RootPath, category, prefabName); T basePrefab = (T)Resources.Load(TargetPath); pools.Add(prefabName, new UnityObjectPool(prefabName, basePrefab, resourceManager, resourceManager.transform)); } UnityObjectPool targetObjectPool = pools[prefabName]; return((T)targetObjectPool.GetAvailableObject()); }
/// <summary> /// 创建一个Unity对象池 /// </summary> /// <param name="_poolName">对象池名称</param> /// <param name="_prefab">对象预设</param> /// <param name="_capacity">容量</param> /// <param name="_preload">是否预加载</param> /// <param name="_group">组名</param> /// <returns></returns> public static UnityObjectPool CreatePool(string _poolName, GameObject _prefab, int _capacity, bool _preload, string _group) { GameObject go = new GameObject(_poolName); UnityObjectPool _pool = go.AddComponent <UnityObjectPool> (); _pool.poolName = _poolName; _pool.prefab = _prefab; _pool.capacity = _capacity; _pool.preload = _preload; _pool.group = _group; _pool.Start(); return(_pool); }
/// <summary> /// 加载对象池 /// </summary> /// <param name="prefab">对象路径</param> /// <param name="capacity">容量</param> /// <param name="preload">是否预加载</param> /// <param name="group">组名</param> public void LoadPool(GameObject prefab, int capacity, bool preload, string group) { string poolName = prefab.name; if (HasPool(poolName)) { return; } if (prefab == null) { Debug.LogErrorFormat("创建对象池,加载对象失败!请检查路径:{0}", prefab.name); return; } UnityObjectPool.CreatePool(poolName, prefab, capacity, preload, group); }
/// <summary> /// 添加一个对象池到管理器, 可以自定义组标记 /// </summary> /// <param name="pool">对象池</param> /// <param name="group">组名</param> public void AddPool(UnityObjectPool pool, string group) { if (pool == null) { return; } if (!HasPool(pool.poolName)) { dic_pool.Add(pool.poolName, pool); pool.transform.SetParent(__parent__); } else { Debug.LogError(string.Format("\"{0}\"这个对象池名字已经存在了,请输入不重复的对象池名称", pool.poolName), pool); return; } }
private void Start() { _healthbarPool = new UnityObjectPool<Healthbar>(_healthbarPrefab, 20); }
/// <summary> /// 销毁一个对象池 /// </summary> /// <param name="pool">对象池</param> /// <returns></returns> public bool DestroyPool(UnityObjectPool pool) { pool.DestroyPool(); RemovePool(pool.poolName); return(true); }
/// <summary> /// 尝试获取一个对象池 /// </summary> /// <param name="poolName">对象池名称</param> /// <param name="pool">对象池</param> /// <returns></returns> public bool TryGetPool(string poolName, out UnityObjectPool pool) { return(dic_pool.TryGetValue(poolName, out pool)); }
/// <summary> /// 添加一个对象池到管理器, 可以自定义组标记 /// </summary> /// <param name="pool">对象池</param> public void AddPool(UnityObjectPool pool) { AddPool(pool, string.Empty); }
/// <summary> /// 创建一个Unity对象池 /// </summary> /// <param name="poolName">对象池名称</param> /// <param name="prefab">预制体</param> /// <param name="capacity">容量</param> /// <param name="preload">是否预加载</param> /// <param name="group">组名</param> /// <returns></returns> public UnityObjectPool CreatePool(string poolName, GameObject prefab, int capacity, bool preload, string group) { return(UnityObjectPool.CreatePool(poolName, prefab, capacity, preload, group)); }
public void Init() { // 避免了字符串的拼接和Lua->C#的string传递 FontConfigFiles = new string[] { "MotionConfig/attack_normal", "MotionConfig/attack_crit", "MotionConfig/under_attack_crit", "MotionConfig/under_attack_normal", "MotionConfig/heal", "MotionConfig/hitrecoverey", "MotionConfig/get_coin", "MotionConfig/get_exp", "MotionConfig/get_exp_profession", "MotionConfig/attack_xishou", "MotionConfig/attack_gedang", "MotionConfig/under_attack_xishou", "MotionConfig/under_attack_gedang", "MotionConfig/attack_daduan", "MotionConfig/under_attack_daduan", "MotionConfig/attack_elem_light", "MotionConfig/attack_elem_dark", "MotionConfig/attack_elem_ice", "MotionConfig/attack_elem_fire", "MotionConfig/attack_elem_wind", "MotionConfig/attack_elem_thunder", "MotionConfig/attack_elem_light_c", "MotionConfig/attack_elem_dark_c", "MotionConfig/attack_elem_ice_c", "MotionConfig/attack_elem_fire_c", "MotionConfig/attack_elem_wind_c", "MotionConfig/attack_elem_thunder_c", }; KRFontConfigFiles = new string[] { "MotionConfig/attack_normal", "MotionConfig/attack_crit", "MotionConfig/under_attack_crit", "MotionConfig/under_attack_normal", "MotionConfig/heal", "MotionConfig/hitrecoverey", "MotionConfig/get_coin", "MotionConfig/get_exp", "MotionConfig/get_exp_profession", "MotionConfig/attack_xishou_kr", "MotionConfig/attack_gedang_kr", "MotionConfig/under_attack_xishou_kr", "MotionConfig/under_attack_gedang_kr", "MotionConfig/attack_daduan_kr", "MotionConfig/under_attack_daduan_kr", "MotionConfig/attack_elem_light", "MotionConfig/attack_elem_dark", "MotionConfig/attack_elem_ice", "MotionConfig/attack_elem_fire", "MotionConfig/attack_elem_wind", "MotionConfig/attack_elem_thunder", "MotionConfig/attack_elem_light_c", "MotionConfig/attack_elem_dark_c", "MotionConfig/attack_elem_ice_c", "MotionConfig/attack_elem_fire_c", "MotionConfig/attack_elem_wind_c", "MotionConfig/attack_elem_thunder_c", }; _rectTransform = GetComponent <RectTransform>(); if (_rectTransform == null) { _rectTransform = gameObject.AddComponent <RectTransform>(); } var hudtext = Resources.Load <GameObject>("UI/HUDText"); _HudTextPool = new UnityObjectPool(hudtext, 10); HUDText.OnComplete = RecycleText; }
/// <summary> /// 签署这个对象 /// </summary> public void Sign(UnityObjectPool _pool) { this.pool = _pool; }
/// <summary> /// 释放这个对象 /// </summary> public void Release() { pool = null; Destroy(this); }