回顾:子弹对象池
本课属于 Coddy Unity 学习旅程的“Unity 游戏架构”单元。第 49 课,共 64 课。
对象池会保留已关闭的对象以备使用,而不是将其销毁。这里,坦克的子弹来自 Unity 的 ObjectPool,每次射击后都会放回池中。
挑战
中等让坦克发射对象池中的子弹。
- 在
Tank的Awake中创建一个ObjectPool<Bullet>:取出时启用,释放时禁用,丢弃时销毁,并设置maxSize: 4。 - 按下空格键时,获取一颗子弹,将它放在坦克前方 1 个单位处,并把对象池交给它。
Bullet以speed的速度沿 +z 方向飞行;每次发射后经过life秒,或击中Target时(调用Hit()),它都会释放自身。
按“开始”,向两个目标射击。然后按“检查”。
亲手试试
using UnityEngine;
using UnityEngine.Pool;
public class Bullet : MonoBehaviour
{
public float speed = 15f;
public float life = 1f;
// 向前飞行;击中 Target 或经过 life 秒后,返回对象池
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
Unity 游戏架构中的所有课
自己练习: Unity 在线编辑器