だらだら〜自由自在〜

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

C#と格闘

C#の圧倒的な経験値不足です…C++ばっかりだったから勝手が分からなーい。でもMS製言語なだけあってVSとの親和性の高さがすごい。インテリセンスなんて一瞬で終わるし(コード規模が小さいのが大きいだろうけど)。変数名の一括変更も、すげぇ!って感じ。Grepとかもうやってらんね。
ほかには、Javadoc系のコメントでずっとやってましたがAPIリファレンス対応のコメント(///

とか)がいい感じなのに気づいた。なんといっても入力支援が楽。でもExpressだとHTMLでリファレンスはけないのかな?それっぽい項目見当たらず。まぁ吐いてもどうせ見ないけど。
やっとプロパティにも慣れてきた。インデックスつきプロパティが無いのはどうなの?っておもうけど。
全部いまさら過ぎるw初心者丸出しだなこれw

弾の初期パラメータ設定テーブル

BulletSystemに配列メンバとして持たせる。で、各Bulletの初期化で弾Typeを添え字にしてテーブルからデータ引っ張ってきて初期化する。パラメータはBulletSystemのインスペクタ上から編集する。

問題

派生Bulletクラス特有のパラメータをどうすか考えてなかった。インスペクタに表示されるのは静的な型(というか配列の型)で、パラメータクラスを派生Bullet用に特化したものを用意してもダメだった。編集できない。C#の言語レベルで間違ってる可能性もあるけど。動的型にエディタがホントに対応して無いなら結構痛いと思うが。メンバがGUIから覗けないわけで。

ドロップダウンリスト

できないと思ってたらできるんだね、そうだよね。

	_editBulletType = ( BulletSystem.BulletType )EditorGUILayout.EnumPopup( "Edit Bullet Type", _editBulletType );

PropertyField

SerializedObjectをBulletSystemでつくり。SerializedPropertyをFindProperty( "_targettingType" );でつくり。OnGUIでEditorGUILayout.PropertyField( serializedProp );する。するとUnityの応答が無くなる。んガッ!

class MyWindow : EditorWindow {
〜〜〜
BulletSystem.SettingInfo settingInfo = fn.system.BulletSystem.Settings[ BulletSystem.BulletType.Simple ];
SerializedObject serializedObj = new SerializedObject( fn.system.BulletSystem );
SerializedProperty serializedProp = serializedObj.FindProperty( "_targettingType" );
〜〜〜
EditorGUILayout.PropertyField( serializedProp );

なんだろうね。
http://unity3d.com/support/documentation/ScriptReference/SerializedProperty.html
こういうところを見ると

SerializedProperty is used in conjunction with SerializedObject and Editor classes.

って書いてあるし、EditorWindowでは使ったらダメなのか?Windowの用途としてどうなんだろう…んーーー…今日はオシマイ