Menu
CoddyTech

回顾:子弹对象池

本课属于 Coddy Unity 学习旅程的“Unity 游戏架构”单元。第 49 课,共 64 课。

对象池会保留已关闭的对象以备使用,而不是将其销毁。这里,坦克的子弹来自 Unity 的 ObjectPool,每次射击后都会放回池中。

challenge icon

挑战

中等

让坦克发射对象池中的子弹。

  1. 在 Tank 的 Awake 中创建一个 ObjectPool<Bullet>:取出时启用,释放时禁用,丢弃时销毁,并设置 maxSize: 4。
  2. 按下空格键时,获取一颗子弹,将它放在坦克前方 1 个单位处,并把对象池交给它。
  3. 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 秒后,返回对象池
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

Unity 游戏架构中的所有课

自己练习: Unity 在线编辑器