【Unity】LINQを使ってみる。

  • |
【Unity】LINQを使ってみる。
   

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

LINQ

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


具体的な使用例 1

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

このコードの中でLINQに当たるのが[Select]と[Max()]です。
  • Select : 条件に応じた値を選ぶ
  • Max() : 最大値を返す


具体的な使用例 2

Scene内の特定のタグのオブジェクトからTransform.positionを取り出す。
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);
}


このコードの中でLINQに当たるのが[Select]と[ToArray()]です。
  • Select : 条件に応じた値を選ぶ
  • Max() : 条件に応じた値の配列を返す


具体的な使用例 3

配列の値で、奇数かつ最小値を取り出す。
var hoge = x.Where(s =>s%2==1).Min();
Debug.Log("奇数の最小値 : " + hoge);
このコードの中でLINQに当たるのが[Where]と[Min()]です。
  • Where : bool型の条件にあった値を選択(trueの場合)
  • Min() : 最小値の値を返す

具体的な使用例 4

重複の削除 Distinct()

配列の重複を失くす場合は[Distinct()]を利用します。
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);
}


最後に

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


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

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

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

Amazonで詳しく見る

Related Posts Plugin for WordPress, Blogger...