对象池(单例)

using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using DevelopEngine;
//单例对象池
public class GameObjectPool:MonoSingleton<GameObjectPool> {

    //public static GameObjectPool instance;//单例

    public GameObject[] prefabs;

    private Dictionary<string, List<GameObject>> pool = new Dictionary<string, List<GameObject>>();//对象池字典

 
    void Awake()
    {
       // instance = this;
    }
    //从池中获取
    public GameObject GetOut(string GameObjectName, Vector3 vector3)
    {
        GameObject gameObject;
        //对象池中有物体
        if (pool.ContainsKey(GameObjectName) && pool[GameObjectName].Count > 0)
        {
            gameObject = pool[GameObjectName][0];
            gameObject.SetActive(true);
            gameObject.transform.position = vector3;

            //取完后移除
            pool[GameObjectName].RemoveAt(0);
        }
        else//池中没有需要的预设体
        {
            GameObject prefab = null;
            //要生成的预设体

            for (int i = 0; i < prefabs.Length; i++)
            {

                if (prefabs[i].name == GameObjectName)
                {
                    prefab = prefabs[i];
                }
            }
            //生成的预设体
            gameObject = Instantiate(prefab) as GameObject;
        }
        return gameObject;

    }
    //存入对象池
    public void SetIn(string GameobjectName, GameObject gameobject)
    {
        //池中没有
        if (!pool.ContainsKey(GameobjectName))
        { //新建list  
            pool.Add(GameobjectName, new List<GameObject>());

        }
        //存入池
        gameObject.SetActive(false);
        pool[GameobjectName].Add(gameObject);


    }

    //销毁对象池
    public void DestroyPool(string GameObjectName)
    {
        if (pool.ContainsKey(GameObjectName))
        {//删除对象

            for (int i = 0; i < pool[GameObjectName].Count; i++)
            {
                Destroy(pool[GameObjectName][i]);
            }
            //移除列表

            pool.Remove(GameObjectName);


        }




    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值