Unity学习日志_对象池简介

Unity学习日志_对象池简介

核心思想

通过空间换取时间

适用性

  1. 当需要频繁创建/销毁游戏对象时使用对象池缓存对象。
  2. 使用反射创建对象。

数据结构

使用字典,Dictionary<string,List>

核心成员


public GameObject CreateObject(参数列表)
{
    //代替传统的Instaniate方法来创建游戏对象,在这里我们根据物体是否禁用来判断是否可以重新使用
    在池中检查是否存在禁用的物体
    {
        如果有,返回对象;
        如果没有对应类的禁用物体,创建对象;
        将新创建的对象加进对象池;
    }
    //调用使用游戏对象方法
    UseObject(参数列表);
    return GameObject;
}
//使用游戏对象
private void UseObject(GameObject go, float lifeTime)
{
    StartCorotine(ObjectLifeTime(go,lifeTime));
}
//迭代器
private IEnumerator ObjectLifeTime(GameObject go, float lifeTime)
{
    yield return new WaitForSeconds(lifeTime);
    //游戏对象生命周期结束之后将物体设为禁用
    go.SetActive(false);
}
//清空对象池中的某个类,注这里应当释放游戏对象资源而不是逻辑清空
public void Clear(string className)
{
    foreach(){
       Destroy(); 
    }
}
//清空所有记录,这里使用foreach要注意foreach的只读属性
public void ClearAll()
{
    
}

注意:执行删除时建议从尾到头删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值