未分類

【Unity】RequireComponentで依存関係にあるコンポーネントの存在を保証する

はじめに

Unityでは、RequireComponentというアトリビュートがあり、依存関係にあるコンポーネントの存在を保証することができます。必要なコンポーネントを付け忘れていたとか、間違えて消してしまったとかUnityエディタ上のちょっとしたミスを減らすことに役立ちます。

Unity 2018.4.9f1で動作確認済みです。

とりあえず使ってみる

実際に RequireComponent を使ってみるため、キャラクターモデルを用意します。今回はSDUnityちゃんを使います。

カスタムのスクリプトUnityChanControllerを用意して、CharacterControllerコンポーネントでキャラを動かすことにします。ざっと以下のスクリプトを用意します。

スクリプトのクラス定義の上にRequireComponentアトリビュートが使われています。クラスにtypeof()をかませて、引数に渡してあげるだけで良いです。作成したスクリプトは、キャラクターモデルにアタッチします。

アタッチと同時に、CharacterControllerもアタッチされることがわかります。既に追加されている場合は、アタッチされません。CharacterControllerコンポーネントのみを外そうとする場合は、外せないよと注意されます。

依存関係のコンポーネントの初期設定

RequireComponentアトリビュートは、必要なコンポーネントを追加してくれるだけなので、初期設定までは変えることはできません。CharacterControllerの場合だと、カプセルの高さがモデルと合わない場合が出てくると思います。

Reset関数を用意すると、スクリプト側でコンポーネントのデフォルト値を制御できます。 Reset関数は、スクリプトの追加時、またはスクリプトコンポーネントの右上にある歯車からResetを選ぶ場合によばれます。 試しに、CharacterControllerの高さと中心を変更してみます。

Resetを選択するとCharacterControllerの値が変更される事が確認できました。

Pocket