对象池

对象池是一种常见的性能优化策略,适用于需要频繁创建和销毁对象的场景,如游戏中的子弹或台阶。本文介绍了对象池的概念、使用场景、实际操作步骤以及注意事项,通过实例展示了如何创建和管理对象池,以减少对象实例化带来的开销。
摘要由CSDN通过智能技术生成

推荐阅读:

前言

      以前去面试,总是会被问及优化方面的问题,使用对象池是优化的一种常见方式。所谓对象池:在一部分内存空间(池子)中事先实例化好固定数量的对象,当需要使用池中的对象时,首先判断该池中是否有闲置(暂未使用)的对象,如果有,则取出使用,如果没有,则在池中创建该对象。当一个对象不再被使用时,其应该将其放回对象池,以便后来的程序使用

对象池的使用场景

1.需要使用大量对象
2.实例化开销比较大且生存期比较短。
例如:
(1)在飞行射击类的游戏中,子弹的发射。当用户射击的时候,会创建很多“子弹”对象,当“子弹”对象碰到敌人时,会被销毁。
(2)在跳跃台阶类的游戏中,台阶的生成与销毁。当跳跃上升一个台阶时,需要在最上面生成一个台阶,同时最下面也会销毁一个台阶。

实际操作

1.创建一个空物体,命名为ObjectPool,创建一个C#脚本,命名为ObjectPool,并将该脚本挂载到对应名字的空物体上。
在这里插入图片描述
2.打开ObjectPool脚本,创建单例模式

public class ObjectPool : MonoBehaviour 
{
   
    public static ObjectPool Instance;

    void Awake()
    {
   
        Instance = this;
    }
}

2.创建需要放在对象池中的对象的指定个数

private int initCount=5;//默认每种对象初始实例化5个
private ManagerVars vars;//管理资源器
public List<GameObject> normalPlatform = new List<GameObject>();//普通的平台对象(对象1)
public List<GameObject> commonPlatformGroup = new List<GameObject>();//通用平台对象(对象2)

private void Init()
{
   
	for (int i = 0; i < initCount; i++)
	{
   
    	InstantiateObject(vars.normalPlatformPre, normalPlatform);
	}
	for (int i = 0; i < initCount; i++)
	{
   
	    for (int j = 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱上游戏开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值