unity让对象作为参数_对象池的使用 —— Unity

在游戏开发中,频繁创建和销毁游戏对象可能导致性能开销。为解决此问题,可以采用对象池技术。对象池预先创建一组对象,需要时从池中获取而不是直接创建,不需要时回收至池中而不是销毁。本文介绍了如何结合单例模式实现Unity的对象池,以炮弹为例,展示了对象池的工作原理和应用场景。
摘要由CSDN通过智能技术生成

在游戏开发过程中,我们可能会遇到某个游戏物体会频繁创建和销毁的操作,像坦克大战中的炮弹,会涉及到炮弹的频繁创建和销毁。我们正常的处理逻辑,应该是在发射炮弹是创建一个新的炮弹对象,并进行相应初始化,炮弹炸毁后,直接调用Destroy()将炮弹对象销毁。这种处理方式可以实现功能需求,但是游戏对象的创建销毁会有一些时间的开销,对性能产生一定的影响。对于这样的问题,我们可以考虑使用对象池。

所谓对象池,就是创建一个存储游戏对象的池子,当需要创建游戏对象时,先在池子中寻找,如果池子中没有符合条件的对象,再进行创建新对象,同样,当游戏对象需要销毁时,不做真正的销毁,而是将其SetActive(false),并存入池子中。这样就避免了大量游戏对象的创建。具体实现如下:

public class ObjectPool : SingleToneMonoBehaviour<ObjectPool>
{
    
    private readonly List<GameObject> _objPool = new List<GameObject>();

    public GameObject GetGameObject()
    {
    
        if (_objPool.Count > 0)
        {
    
            lock (_objPool)
            {
    
                var obj = _objPool[1];
                _objPool.RemoveAt(1);
                /**
                 * 在这里可以加
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值