Unity / VRゲーム開発日記@長崎

Unityを使ったVRのゲーム開発をやってます。

Hashtable(ハッシュテーブル)をスッキリ書く

iTweenを利用する場合、Hashtableの記述がほぼ必須になってくるかなと思います。

単純に書いた場合は以下の様な感じですかね。

iTween.MoveTo(gameObject, iTween.Hash("speed", 1f, "x",10f, "y",10f, "easeType", iTween.EaseType.linear));


ただし、こう書いた場合、
キーとバリューが横一列に並んでちょっと見づらいです。
(後ろ、既に見えてないし(^^;)


そこで、Hashtableを予め作成しておいて、
それを第二引数に渡すという手もあります。

var hash = new Hashtable();

hash.Add("speed", 1f);
hash.Add("x", 10f);
hash.Add("y", 10f);
hash.Add("easeType", iTween.EaseType.linear);

iTween.MoveTo(gameObject, hash);


こうするとキーとバリューの対比がはっきりして
後で修正するときもやりやすいかなと思います。


しかし、初期化時に既に値が決定しているなら
以下の様な記述でnewの部分で値を設定するということもできます。

var hash = new Hashtable(){

	{"speed", 1f} ,
	{"x", 10f} ,
	{"y", 10f} ,
	{"easeType", iTween.EaseType.linear} ,

};

iTween.MoveTo(gameObject, hash);


こうすると、記述量も減り、ぱっと見もスッキリするので
個人的には初期化の時はだいたいこういう書き方をしています。
ちなみに、enumや普通の配列の定義同様、最後の項目のカンマはつけたままで良いです。


ちなみにListやDictionaryも同様に初期化できます。
詳細についてはあたもこさんのサイトで紹介されいていました。

C# コレクション初期化子


VisualStudioでの話ですが、C#の記述は同様なので
上記での2008バージョンの初期化が利用できます。