[Unityエディター拡張] Unityエディター拡張について調べていった

ヨメレバCSS
オリジナルCSS

仕事でちょこちょこと調べては拡張してということを繰り返していたので、一度腰を据えてやらねばとまとめてみた。

主に自分用のまとめとして、だいぶ口語訳的にやっています。

環境について

OS Windows7 (64bit)
Unity 5.1.3f1

基礎知識のようなもの

まず基本的に知っておいた方がいいこと。

スポンサーリンク
GoogleAdSence レクタングル(大)

・エディター拡張とは

エディター拡張とは、Unityのインスペクタ、要はオブジェクトの設定をする部分のウィンドウをカスタマイズできる機能のこと。

・Editorディレクトリ

Unityでは、「Editor」というディレクトリを作成すると、その下にあるスクリプトはエディタ用のものとみなされるようになり、ゲーム本体には格納されなくなります。

MonoDevelopのプロジェクトも別のものになっており、ゲーム側では使えないエディタ用の機能も使えたりします。

エディター拡張やビルドで使うスクリプトなどはここに置かれます。

・特別なメソッド

エディター拡張時に使用するメソッド。これをオブジェクトに定義して呼び出します。

・OnGUI

通常の描画時に呼ばれるメソッド。エディター拡張ではエディターウィンドウの拡張で使われます。

・OnInspectorGUI

インスペクタ拡張のときに呼ばれるメソッド。この中にインスペクタの記述を書きます。

・OnSceneGUI

シーン拡張のときに呼ばれるメソッド。この中にシーンで使う記述を書きます。

・OnValidate

インスペクタの値が変更されたときに、そのオブジェクト側で呼ばれます。

値が変更されたときに連動して変更したい項目がある場合などに使います。

・特殊なメンバ変数

エディター拡張用に定義されたメンバ変数について。

・target

OnInspectorGUI、OnSceneGUIなどで出てきます。

このインスペクタが対象としているオブジェクトが格納されています。

Objectで定義されているので、参照するときは該当オブジェクトのクラスにキャストして使います。

例えばインスペクタで、SampleClassのメンバ変数nameを更新するフィールドを作成するとしたら、

SampleClass obj = target as SampleClass;
obj.name = EditorGUILayout.TextField ("name", obj.name);

というようにします。

関連するリファレンスなど

(ドキュメント)エディター拡張

Unity では独自のインスペクターと エディターウィンドウ、さらにインスペクターにプロパティを表示する独自の Property Drawer を作成することができます。このセクションでは、これらの機能を使用する方法について説明します。

参考にしたサイトなど

その1 Inspectorが変わる!

手抜きしてインスペクター拡張

スポンサーリンク
GoogleAdSence レクタングル(大)

シェアする

スポンサーリンク
GoogleAdSence レクタングル(大)