テラシュールブログ

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

IOS/Androidの為のオブジェクト管理Assets

AndroidIOSはメモリ管理が大変らしい。
不足すると問答無用で落ちるし、評価もガタ落ち。良いことない。

なので、多少緩和するAssetsを使ってみる。
で、【Swarm Object Manager】が4月8日まで無料なので、さっそくDLして使ってみた。

スクリーンショット 2012-03-31 6.38.18

フォローボタン

■デモ

実際使ってみたデモは【こちら
デモでは生成したオブジェクトにユニークな名前が概ね違う名前が割り当てられているので、
再利用時にわかりやすいと思う。
(命名とカウントのところがスレッドセーフじゃなかったんで、ユニークじゃなかった)

スクリプトの内容はこんな感じ
・ストックは1秒間使用されなかったら削減(全体の2割まで)。
・オブジェクトの生成数に制限は無し。
・アクティブなオブジェクトは5秒後に破棄(ストックする)


■Swarm Object Managerとは

Swarm Object Managerは、生成したオブジェクトをリサイクルして
効率的に運用するためのオブジェクトマネージャー。
削除するオブジェクトは一時ストックし、オブジェクト実行時はストックから再利用する。

使ってみた感じ、オブジェクトの生成速度が破棄と同程度になると、
ほとんどオブジェクトをインスタンス化せずに使用できる。

射撃の弾だけでなく、エフェクトやMOB等、頻繁に作成・削除するものは、
こういった機能を使って管理するのが良さ気。



■知っておくべきこと

便利な機能だけど、色々と面倒な処理が必要になる。

1.再利用するオブジェクトはSwarmItemを継承しないといけない。
2.StartやAwakeメソッドが実行されない。(OnStateChangeを利用する)
3.DestroyではなくKill(SwarmItemのメソッド)を利用する。
4.オブジェクトのパラメータは自分で初期化しないといけない。

特に4番の初期化されないのは面倒で、rigidbodyの落下速度が最初からMAXだったりする。


使い方は【こちら】。