前言
最近在做一个飞机大战的小游戏,素材都是取自微信打飞机的,研究一下对象池,
游戏中需要重复实例化和销毁的游戏物体,比如子弹,敌机。通过对象池的使用可以优化游戏性能。
大致做法就是:
1 创建对象池,将频繁使用的游戏物体在对象池中预加载
2 在游戏过程中,需要使用时,将游戏物体从对象池中取出来
3 在游戏物体使用结束后,不用的时候不要把它直接Destory掉,而是SetActive(false)。
这样当你再次使用的时候只需要SetActivie(true) 这样对应这个游戏对象来说 它只会执行OnEnable()这一个方法,所以载入速度是最快的。
4 将对象池中的游戏物体,隔一段时间,定期清理掉(也就是Destory掉)
5 通过对象池的使用,避免了在游戏过程中频繁的实例化和销毁物体,从而提高游戏性能。
雨松大大有介绍对象池的用法和插件:Unity3D研究院之初探PoolManager插件(七十四)
动态的给内存池里面加对象
实际游戏中往往我们需要动态的去载入一些无法提前预知的游戏对象,
所以初始化内存池的操作建议还是在脚本里面来完成。
在飞机大战这个游戏中。有:三种敌机类型,两种子弹类型,两种奖励物品。
这里我们看下 敌机和奖励物品 是如何添加到对象池并且在游戏中使用的
using UnityEngine;
using System.Collections;
using PathologicalGames;