Google

2012年8月1日水曜日

Unityでコインゲー開発話:管理クラス設計

負荷実験の続きです。

前回書いた負荷テストのデモ版ですが、実機では以下の現象が発生しました。

 コイン生成数が一定数を超えた時点で一気にCPU負荷が上がる
 deleteしたはずのコインのメモリが開放されない

デモ版では、Y座標が台座の下になったらdeleteするような仕組みを入れておいたのですが、やはりメモリが開放されないことが確証されてしまいました。
という事でやっぱり全てを管理せざるを得ないという結論になったわけです。

で、考えたインスタンス管理の構造ですが、要件はこうです。

 ・MonoBehaviour派生クラスのインスタンスプールで管理する
 ・アイテムは複数種類管理可能なように、基底アイテムクラスを準備
 ・プールの数はインスペクタで簡単に変更可能にする
 ・インスタンスにはそれぞれに連番を付ける
 ・生きてないクラスはActiveフラグで制御する
 ・セーブロードに対応可能にする

これらの概念は組み込み開発の経験が役立ちました。
組み込みは広域operator newを自力で作成する事から始まるので、こういった管理の方法はそこそこ慣れてた訳です。

構造にするとこんな感じ。


次回簡単なサンプルを準備しようかと思ってます。
この仕組は今でもUnityを使う上での正解のひとつじゃないかと思ってます。
実際この構造のお陰で速度、メモリの点で大きく恩恵を受けました。
起動スピードまで早くなって助かったのを覚えています。

続きは次回。

0 件のコメント:

コメントを投稿