对象池详细代码

本文详细探讨了对象池的设计与实现,通过代码实例展示了如何创建和管理对象池,以提高资源利用率和性能。
摘要由CSDN通过智能技术生成

public static TurretManager instance;

private Dictionary<string, List<GameObject>> pool;
void Awake()
{
    instance = this;
}
void Start()
{
    //string为预设体的name,list存入预设体生成的gameobject
    pool = new Dictionary<string, List<GameObject>>();
}

//取对象  定义取对象,需要什么参数,对象声明的位置和角度
public GameObject GetObjectFromPool(string objName, Vector3 pos, Quaternion qua)
{
    //声明一个gameobject
    GameObject go;
    //判断是否包含对应的list,并且list有值,不为空
    if (pool.ContainsKey(objName) && pool[objName].Count > 0)
    {
        //取出对应的第0个元素,赋值给go
        go = pool[objName][0];
        //移除list中赋值给go的第0个元素
        pool[objName].RemoveAt(0);
        //激活该对象
        go.SetActive(true);
    }
    //不是上面的情况都无法从池子中取出gameobject 只能克隆
    else
    {
        //将克隆的对象作为预设体放在resources文件夹中
        //resources.load加载出来的对象为object类型,需要里氏转换成gameobject类型
        go = Instantiate(Resources.Load(objName) as GameOb
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值