だらだら〜自由自在〜

インディーゲーム制作チーム GAME GABURI でプログラム担当してます

カスタムインスペクター

思ってた異常にいろんなことが出来るのか?GUI周り。いろんなことをする必要があるのか…ツール作るのキライじゃないけど

new GameObject

new GameObject ("FooObject")

でゲームオブエクとの動的生成できるのか。そんな発想がなかった。

カスタムインスペクター

やりたいのは。メンバとしてもってるクラス(構造体)をインスペクターで表示したい。メンバ宣言時にインスタンスしてても、普通にやるとインスペクタ上では参照を設定する事しか出来ない。クラスの中身(メンバ変数)も表示&編集出来るようにしたい。
http://www.unifycommunity.com/wiki/index.php?title=Notes
ここにカスタムインスペクターの事は載ってたけど。これは対象クラス自体のインスペクタでは有効だけど対象クラスがメンバ変数に対してはやはり参照を設定する状態になってしまう。日本語ムチャクチャだけどあとで見てわかるのだろうか…

	public override void OnInspectorGUI()
	{
		Init();
		DrawDefaultInspector();
		if( GUILayout.Button( "test" ) ) {
			MyWindow.ShowWindow();
			return;

とりあえずこれでボタンをインスペクタに追加できた

いろいろやった…

わかった。

[System.Serializable]
public class HogeInfo {
  public int _hoge;
}

単にこれだけでおk。[System.Serializable]をつける前にObjectを継承してしまったのが敗因か。Object継承だと参照セットのGUIになってしまう。HogeInfoのインスタンスは配列でもおkだった。これで弾のパラメータを種類別にGUIから設定できるけど、配列のサイズが可変長なのが怖いところ。たぶん固定長に出来るんだろうけど。せっかくなので簡単なツール作ってみるのもいいかも。

配列の固定長

探したが見つからず…Propertyかと思ったんだが。んむー