テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

Swarm Object Managerの使い方

前回】の続きで、今回はSwarmObjectManagerの使い方のメモ。

■再利用可能なプレハブの設定

SwarmObjectManagerでプレハブを再利用するには、
SwarmItemを継承する必要がある。

初期化するには、protected override void OnStateChange()を使う。
これはオブジェクトがActive(生成)になったタイミングと、Inactive(ストック状態)になったタイミングで呼び出されるメソッド。
このタイミングで初期化してやれば良いっぽい。

ちなみにオブジェクトの削除はKill()で行う。

下はオブジェクトが生成(Active)されると、
5秒後に自分を殺しストック状態(Inactive)になるサンプルソース


public class Item : SwarmItem {
protected override void OnStateChange()
{
switch (_state)
{
case STATE.Active:
Debug.Log("Active");
StartCoroutine(SelfKill());
break;

case STATE.Inactive:
Debug.Log("Instance");
break;
}
}
IEnumerator SelfKill () {
yield return new WaitForSeconds(5.0f);
Kill();
}
}

■オブジェクトを再利用するSwarmObjectManagerの設定

SwarmObjectManagerを設定する方法。
まずObjectManagerて名前のオブジェクトを作りSwarmItemManagerコンポーネントを追加。
次にItem Prefabsに最利用するプレハブを登録する。
(一つのSwarmItemManagerに複数のプレハブも登録できる)

スクリーンショット 2012-04-02 23.40.00

最後にオブジェクトに次のスクリプトをObjectManagerに登録する。


private SwarmItemManager manager;

void Start(){
manager = gameObject.GetComponent();
manager.Initialize();
}

// Update is called once per frame
void Update () {
manager.FrameUpdate();
}

ちなみにObjectManagerはシングルトンにしておくと便利なのかもしれない。
サンプルソースがそうなってた)


■オブジェクトを利用する。

オブジェクトに利用方法は簡単。
SwarmItemManager managerでマネージャーを参照可能にしておき、
SwarmItem obj = manager.ActivateItem() ;でInactiveからオブジェクトをひとつ取得するだけ。
(Inactiveが0個なら、新しくオブジェクトを作る)



オブジェクトの生成と削除はけっこう泥臭い部分なので、
こういったAssetsで負荷が軽減できるなら、どんどん試してみたい。


フォローボタン