下面是演示环节。
本节我们在《慕课英雄2》的游戏场景中
使用对象池技术,优化僵尸的创建与销毁过程
这里我们已经在 Unity
编辑器中打开了《慕课英雄2》的 GamePlay 场景 并且将游戏运行平台切换至
PC & Mac & Linux
standalone 平台 首先我们选中 Project
视图中 Newzombie——僵尸与制件
在它的 Zombie AI 脚本主键中 取消勾选
Auto Init 属性 接着展开 Project
视图中的 Prefabs Unit 3
把其中的 Zombie Generator 对象
拖入 Hierarchy——层级视图中
并且重置 Zombie Generator 对象的 Transform 组件
我们展开 Zombie Generator
对象,其中包含了 5 个空对象,分别命名为
SpawnPosition 1 到 SpawnPosition 5
它们标记了场景中的 5 个位置
我们将在这些位置 随机生成僵尸。
Zombie Generator 对象
绑定了 Zombie Generator 的脚本
该脚本具有一系列和僵尸生成有关的参数 其中
Zombie Spawn Transform 是一个数组 Size 为 5。
Element 是 Zombie Generator 对象的 5 个
SpawnPosition 子对象。
Maximum Instance Count
属性为 10 表示场景中最多包含 10 只僵尸
Min Generate time Interval
和 Max Generate time Interval
分别是生成僵尸的最小和最大时间间隔 Zombie Prefab
是僵尸预置键 我们把它设置为 NewZombie
预置键 最后我们删除场景中已有的僵尸
[空白_音频] 预览游戏
可以发现
场景中一开始并没有僵尸。
随着游戏的进行 僵尸生成点会不断地有僵尸出现
[空白_音频]
[空白_音频] 下面
我们结束游戏的预览 双击打开
Project 视图中的 Zombie Generator 脚本。
我们讲解 Zombie Generator 脚本 [空白_音频] 在
Start 函数中 我们创建一个僵尸类的数组
作为对象时,然后在循环中使用 Instantiate
函数创建僵尸对象 禁用创建好的僵尸对象
把它们放入僵尸对象池 直到填满对象池。
这样我们就完成了僵尸对象池的初始化工作
Generate 函数 用于生成僵尸。
该函数首先调用 GetNext AvailiableInstance 函数。
在僵尸对象池中找到一个未激活的僵尸对象 调用 SetActive
函数,激活该僵尸对象 然后调用僵尸对象 Zombie AI
组件的 Born 函数 在 Generate 函数的 position
参数指定的位置 初始化该僵尸对象,完成僵尸对象的创建
最后,在 Update 函数中
我们在僵尸生成时间的最小值和最大值之间 随机生成一个时间间隔,然后
在这段时间间隔之后生成一个僵尸 并再次随机生成一个时间间隔
下面我们看 Zombie AI
脚本 [空白_音频]
Zombie AI 脚本的 Born
函数用于 僵尸对象被激活后,初始化僵尸对象的一系列状态
[空白_音频] Zombie AI
脚本的 Update date state [空白_音频]
表示 僵尸死亡状态的处理函数
在僵尸死亡一段时间后,该函数禁用僵尸对象 这相当于把僵尸放回了对象池
最后,我们回到 Unity 编辑器
保存当前游戏场景 以上
就是本节演示的全部内容