【Unity】LINQを使ってみる。

Unityというよりは、C#に「LINQ」と呼ばれる便利な機能があります。 SQLのクエリ式のような記述でデータの加工ができるものらしいのですが、全くわからにので少し調べてみました。

LINQ

とりあえず色々と調べた所、このサイトが1番わかりやすかったです。

具体的な使用例 1

配列の中から1番大きい数字を取り出す場合は、以下のように記述をします。 [c] float[] x = {1,2,3,4,5,6,7,8,9} ; var hoge = x.Select(s => s).Max(); Debug.Log("最大値:" + hoge); // 9が取り出される [/c]

このコードの中でLINQに当たるのが[Select]と[Max()]です。

  • Select : 条件に応じた値を選ぶ
  • Max() : 最大値を返す

具体的な使用例 2

Scene内の特定のタグのオブジェクトからTransform.positionを取り出す。 [c] var transforms = GameObject.FindGameObjectsWithTag("Hoge").Select(go => go.transform.position).ToArray(); foreach(Vector3 hogeInt in transforms){

 Debug.Log("position x: " +hogeInt.x + " y: " + hogeInt.y + " z: " + hogeInt.z);

}

[/c]

このコードの中でLINQに当たるのが[Select]と[ToArray()]です。

  • Select : 条件に応じた値を選ぶ
  • Max() : 条件に応じた値の配列を返す

具体的な使用例 3

配列の値で、奇数かつ最小値を取り出す。 [c] var hoge = x.Where(s =>s%2==1).Min(); Debug.Log("奇数の最小値 : " + hoge); [/c] このコードの中でLINQに当たるのが[Where]と[Min()]です。

  • Where : bool型の条件にあった値を選択(trueの場合)
  • Min() : 最小値の値を返す

具体的な使用例 4

重複の削除 Distinct()

配列の重複を失くす場合は[Distinct()]を利用します。 [c] var array = new[]{9,2,5,2,2,9,2,19} ; var hoge = array.Where(s => s%2==1).Distinct(); foreach(var hogeInt in hoge){

Debug.Log("奇数  : " + hogeInt);

} [/c]

最後に

今回はLINQのさわりだけをブログに書いたのですが、その他色々なことができます。 現状、私は全然理解がないのですが、使っていく毎に便利になっていくのではないでしょうか。 ただ、Unityで利用する際には色々と大変なことがあるみたいですので、注意をしないといけませんね。

C#に関してはC++と比べ違う部分が多い感じがするので、どんなことがまず出来るのかを勉強していきたいです。

Unity5 3Dゲーム開発講座 ユニティちゃんで作る本格アクションゲーム (Smart Game Developer)Unity5 3Dゲーム開発講座 ユニティちゃんで作る本格アクションゲーム (Smart Game Developer)
まつだす,BATA,㊥Maruchu,うにたじゃむお,栗坂こなべ,森理 麟,alwei

翔泳社
売り上げランキング : 11808

Amazonで詳しく見る