振り返り:弾丸プール
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プレイグラウンド