Exemplo n.º 1
0
 private void Awake()
 {
     if (projectilePool == null)
     {
         projectilePool = ObjectPoolManager.GetManager().CreatePool(ProjectileTemplate.name, ProjectileTemplate, 20);
     }
 }
Exemplo n.º 2
0
    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);
        }
    }
Exemplo n.º 3
0
 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();
     }
 }
Exemplo n.º 4
0
        public void Init()
        {
            isInit = true;
            var hudtext = Resources.Load <GameObject>(path + "HUDText");

            _HudTextPool       = new UnityObjectPool(hudtext, 10);
            HUDText.OnComplete = RecycleText;
            motionTextModels.Clear();
        }
Exemplo n.º 5
0
 /// <summary>
 /// 对象正在销毁
 /// </summary>
 protected override void _OnDestroy()
 {
     ReleaseTimer();
     if (pool != null)
     {
         Debug.LogWarningFormat(
             "有被对象池签署标记的对象没按正常流程销毁,销毁对象名称:{0},PoolName: {1}",
             gameObject.name, pool.poolName);
         pool = null;
     }
 }
Exemplo n.º 6
0
    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());
    }
Exemplo n.º 7
0
    /// <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);
    }
Exemplo n.º 8
0
    /// <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);
    }
Exemplo n.º 9
0
 /// <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;
     }
 }
Exemplo n.º 10
0
 private void Start()
 {
     _healthbarPool = new UnityObjectPool<Healthbar>(_healthbarPrefab, 20);
 }
Exemplo n.º 11
0
 /// <summary>
 /// 销毁一个对象池
 /// </summary>
 /// <param name="pool">对象池</param>
 /// <returns></returns>
 public bool DestroyPool(UnityObjectPool pool)
 {
     pool.DestroyPool();
     RemovePool(pool.poolName);
     return(true);
 }
Exemplo n.º 12
0
 /// <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));
 }
Exemplo n.º 13
0
 /// <summary>
 /// 添加一个对象池到管理器, 可以自定义组标记
 /// </summary>
 /// <param name="pool">对象池</param>
 public void AddPool(UnityObjectPool pool)
 {
     AddPool(pool, string.Empty);
 }
Exemplo n.º 14
0
 /// <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));
 }
Exemplo n.º 15
0
    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;
    }
Exemplo n.º 16
0
 /// <summary>
 /// 签署这个对象
 /// </summary>
 public void Sign(UnityObjectPool _pool)
 {
     this.pool = _pool;
 }
Exemplo n.º 17
0
 /// <summary>
 /// 释放这个对象
 /// </summary>
 public void Release()
 {
     pool = null;
     Destroy(this);
 }