前回のブログの続きです。
シーン上のキャラクター関係のインスタンスは共通の基底クラスを持たせているので、
基底クラスに当たり判定の管理ルーチンを入れることにしました。(クラスが肥大化するのが困りものですが・・・)
Playerのスクリプトで基底クラスにSysRect型のクラスを配列で定義し、参照しようとしました。
例にすると以下のようなコードです。
これを実行すると、Null Reference Exceptionエラーが出てしまいました。
どのオブジェクトにも参照を持たない参照変数にアクセスしようとしたことが原因でした。
これは、CManager クラスの SerchCollisionIndex() メソッドで
collision[i].index < 0
を実行するときに出るエラーでした。
今回の解決策ですが、CManager クラスのに Awake() メソッドを用意しその中で
collision[i] = new SysRect();
collision[i].index = -1;
と記述することで解決できました。
例にしたものの最終的なコードは以下のようになりました。
メモ : Awake() メソッド : Unityでは Start() メソッドよりも先に呼ばれます。