Unityを使った3Dゲームの作り方(かめくめ)ゲーム開発エンジンUnityを使った3Dゲームの制作に参考になる情報を公開しています。コピー2017.10.20今回はC#でLINQを使ってみます。通常であれば、SQLデータベース、XMLドキュメントといった様々な種類のデータ毎にクエリ(データにアクセス、操作する手段)演算が必要ですが、LINQを使うとそれを同じようなクエリ演算を使ってする事が出来ます。LINQについてはC#リファレンスを参考にしました。いうインタフェースを実装しているクラスになります。ListはIEnumerableを継承しているので使用する事が出来ますね。System.Linq;usingディレクティブでSystem.Linqを指定します。これでMonoDevelopのインテリセンス機能?でLINQのメソッドが現れるようになります。実際にいくつかのLINQのメソッドを実行して確認してみます。操作をする配列、List、Dictionaryのデータを用意し、これらの要素を操作してみます。3}};それぞれ初期値を与えています。条件が成立しているか判断するメソッドAnyメソッドAnyメソッドは条件に合う要素があるかどうかでbool値を返します。ひとつでもあればtrueを返します。("test")));↑の場合はstringValueにはtest1、test2という要素があるのでtrueが返ります。AllメソッドAllメソッドは全ての要素が条件を満たしているかどうかを返します。0));↑の例ではtrueが表示されます。条件にあった要素を抽出しIEnumerableインタフェースを返すメソッドWhereメソッドWhereメソッドは条件に合う要素からIEnumerableのジェネリックを返します。5)が実行されtempList2が決まる事になります。遅延実行については後ほどやります。DistinctメソッドDistinctメソッドは要素の中から重複する値を持つ要素を削除してIEnumerableのインタフェースを返します。いう要素が表示されます。TakeメソッドTakeメソッドは要素の中から指定した数の要素を取得しIEnumerableジェネリックインタフェースを返します。TakeWhileメソッドTakeWhileメソッドを使用すると、要素が条件に合っている間要素を取得し、IEnumerableジェネリックインタフェースを返します。4);↑の例では要素が4以下の間要素を取りだしているので要素の値が5になった時点で終了します。OrderByメソッドOrderByメソッドを使うと要素を昇順に並べ替えをする事が出来ます。value);}↑の例ではlistの要素を昇順に並べ替えています。OrderByDescendingメソッドOrderByDescedingメソッドを使用すると要素を降順に並べ替える事が出来ます。value);}OrderBy、OrderByDecendingで比較方法を指定OrderByやOrderByDecendingの引数にICompareインタフェースを実装したクラスを渡すと、比較方法を変更する事が出来ます。ICompareクラスを実装したクラスを作成し、比較メソッドであるCompareを作成します。x;}}↑の例ではyからxを引くようにしているので要素の数を降順に並べ替えます。value);}listの要素の値をCompareClassのCompareで指定されている並びに変更しています。value);}要素を使った操作メソッドAverageAverageメソッドは要素の平均値を求める事が出来ます。());listリストの要素の平均値は5が表示されます。CountメソッドCountメソッドはListクラスのメソッドもあり要素数を返す事が出来ますが、LINQのCountメソッドを使うとPredicateデリゲートやラムダ式で条件にあった要素の数を返す事が出来ます。7));↑の例ではlistの要素で7以上の数値の要素を返すので6が表示されます。条件に合う要素を抽出FirstメソッドFirstメソッドは要素の中から条件にあった最初の要素を取得しますが、要素がなかった場合は例外が発生します。0));↑の例では1が表示されます。FirstOrDefaultメソッドFirstOrDefaultメソッドは要素の中から条件にあった最初の要素を取得しますが、要素がなかった場合はその要素の型のデフォルト値が返ってきます。10));↑の例では要素の中に10以上の値はないので、要素のint型のデフォルト値である0が返ってきます。即時実行と遅延実行WhereメソッドやDistinctメソッドではIEnumerableのジェネリックを値として取得出来ますが、Distinctの実行はその値を使う時にあらためてlistを取得し実行する遅延実行です。その為Distinctメソッドの項目で作成したenumerableListを使った処理をする時に、list.Distinctが実行されenumerableListの値を作成します。enumerableListを作成した後に元のリストを変更した場合、その後のenumerableListも変更されます。試しに以下のようなスクリプトを記述してみます。いう要素を持つenumerableListを作成します。その後listから3以上の要素を削除します。表示されそうですが、Distinctは遅延実行なので、enumerableListを使う時にlist.Distinctを実行し、それがenumerableListに入ります。遅延実行をしたくない時は、ToArray、ToList、ToDictionary等を使ってその場で配列やリスト、ディクショナリに変更します。();WhereやDistinct以外のメソッドでも遅延実行をするものがあるので、使う時に気を付けないといけません。ToDictionaryでDictionaryを作成してみます。[key]);}↑の例ではdictionaryのキーと値のペアがdicに渡され、そのキーにkeyという文字が含まれているものを抽出し、それをToDictionaryでDictionaryに変換しています。ToDictionaryではキーと値をどれにするかを設定します。表示されます(otherにはkeyという文字列が含まれない為登録されません)。チェーンメソッドLINQはIEnumerableに対して行えるので、Whereメソッドの後にTake、ToList等、メソッドを繋げて実行する事も可能です。value);}↑の例ではWhereの戻り値であるIEnumerableに対してTake(5)を実行し、IEnumerableが返ってきて、さらにそれに対してToListを実行しリスト化しています。全サンプル最後に全てのサンプルを搭載したスクリプトを掲載します。x;}}実行結果は各自確認してみてください。(^_^;)終わりにLINQのメソッドは他にもありますが、ざっくりと紹介しました。後で追記するかもしれません。コピーかめくめちゃんをフォローする7Unityを使った3Dゲームの作り方(かめくめ)Unityを使った3Dゲームの作り方(かめくめ)関連記事UnityでC#の勉強C#のStackを使用してみるC#のStackをUnity付属のMonoDevelopを使用して勉強していきます。StadioでC#で演算子のオーバーロードを使ってみます。演算子のオーバーロードを行うと、ユーザー定義のクラスや構造体で+等の演算子でクラスを足したりすることが出来ます。UnityでC#の勉強C#で正規表現を使って文字列処理をするC#で正規表現を使って文字列処理をする勉強をしていきます。UnityでC#の勉強C#のQueueを使ってみるUnity付属のMonoDevelopを使ってC#のQueueを勉強していきます。UnityでC#の勉強C#のDictionaryを使ってみるC#のDictionaryをUnity付属のMonoDevelopで使ってみます。UnityでC#の勉強C#でフォルダ、ファイルの作成、移動、削除をするC#でDirectoryクラス、Fileクラスを使用してフォルダ、ファイルの作成、移動、削除を行ってみます。サンプルはUnity付属のMonoDevelopを使って作成し実行していきます。UnityのRPGでワールドマップから戦闘シーンへの遷移を作成するC#で継承を使ってみるホームUnityでC#の勉強スポンサーリンクサイト内検索が出来ますプロフィール管理人のかめくめちゃんです。(-_-)メールはこちらにお願いします(記事に関する質問は送らないでください、返信は期待しないでください(._.))。kamekumechan@gmail.comいずれはSIRENやバイオハザードみたいなアクションゲームを作りたいと思っています。ゲームシナリオが書けないので面白いゲームはなかなか作れません・・・・。(^_^;)名前の由来はカメが好きだからです。プロフィールになってないな・・・・(-.-)Unityをこれから始める人へこれからUnityを使ってみようという方はUnityを使った3Dゲームの作り方(かめくめ)の歩き方Unityを使った3Dゲームの作り方(かめくめ)で、はじめてUnityの学習をする時の当ブログの記事を読む順番を書きました。機能を積み上げていく形になるので便利かも?gametukurikata.com2019.06.21の記事に記載の順番で見て頂くとUnityの基本的な使い方がわかり、簡単なアクションゲームや、TPSゲームの作成までが出来ます。自作タイピングゲームタイピングゲームを作りました。WebGL形式なのでPCのブラウザで遊べます。以下からプレイ出来ます。FinalTypingUnityを使って作成したローマ字入力のタイピングゲームです。gametukurikata.com2022.01.02お知らせ2023/01/24個人的にUnity2022.2.3f1をインストールしました。2022/10/14UnityのIKを使って足の位置と角度を地面に合わせる機能Unityのゲームでキャラクターの両足が別の高さの地面の上にある時にそれぞれの足をそれぞれの地面につけるようにする機能を作成しますgametukurikata.com2016.04.11機能を少し修正しました。2020/09/19コメント欄は閉鎖しました。今までコメントを投稿してくださった方はありがとうございました。(^^)/2018/08/07わたくしに出来る事は既に記事にしてあるので、ブログ右上の検索窓を活用してください。(._.)またブログの最初の方の機能を積み上げていく記事に関しての疑問点は当ブログ記事のスクリプトの説明と寄せられた質問への回答Unityを使った3Dゲームの作り方(かめくめ)の機能積み上げ形式の記事のスクリプトの説明と寄せられた記事の機能についての質問への回答を掲載しています。gametukurikata.com2019.08.01Unityを使い始めたばかりの人がつまづきやすい点を解消するUnityを使い始めたばかりの人が結構な確率で陥る不具合や疑問点を解消していきます。基本的にはブログに寄せられた質問への回答という感じです。gametukurikata.com2018.12.04も参照してみてください。小・中学生によるデジタルコンテンツ開発の全国大会ですuycc.unity3d.jp2022年大会の先行エントリーが開始されているようです。当ブログはハイスピードプランです。WordPressの編集画面の動作が早くなった。当ブログはハイスピードプランです。WordPressの編集画面の動作が早くなった。記事の内容に質問がある方へUnityを使った3Dゲームの作り方(かめくめ)の歩き方UnityのJavaScriptとC#を読み替えてどちらでも対応出来るようにするホーム検索トップサイドバータイトルとURLをコピーしました。