SlideShare a Scribd company logo
UnityでLINQを使おう
Usushiki
Unityを使っている人へ質問です。
スクリプトの言語は何を使っていますか?
今回は、C#のLINQについてのお話です。
What’s LINQ ?
○ C#3.0で登場した機能でリレーショナルデータベースやXMLに対する
操作をプログラミング言語に統合するものの総称。
○DB以外の者に対してもクエリ式風の処理ができる。
(このスライドでのLINQはLINQ To Objectのこと)
→つまり配列とかリストとかにSQLっぽい処理をかける
こんなかんじ
var tr = GetComponentsInChildren<Transform> ()
.Select (user => new { name = user.name , trans =user.transform} )
.ToDictionary (s => s.name, s => s.trans);
Unityでlinqを使おう
というわけでどんなことができるかご紹介!
例えば・・
敵のリストの中から
プレイヤーとの距離が10以下の物を探してリストアップする。
LINQを使わない場合
List<Enemy> enemyList = LoadEnemyList(); //リストをロードしてくる
List<Enemy> tempList = new List<Enemy>(); //格納用リスト
foreach( Enemy enemy in enemyList)
{
if(enemy.distanceToPlayer <= 10)
{
tempList.Add(enemy);
}
}
長い・・
LINQを使ってみる
//リストをロードする
List<Enemy> enemyList = LoadEnemyList();
//配列の場合(要素数がわからなくてもok)
Enemy[] enemys = enemyList.Select(e => e.distanceToPlayer <= 10 )
.ToArray();
//リストの場合
List<Enemy> enemys = enemyList.Select(e => e.distaceToPlayer <= 10)
.ToList();
短い!
(人によっては)わかりやすい!
どうちがう?
foreach & if
 長い、ネストの巣窟になりやすい。
 無駄なループがあったりする。
 考え方的には、どんな処理をするかを書く。
 条件が複雑化するほどコードが汚くなる。
 素直な書き方(プログラマー的に)
LINQ
 短い
 何をやりたいかを直感的に書ける
 コードがきれいに!!!!!!
 . でつなげば複雑な条件にも対応可能。
 使いどころは考える必要がある。
ほかにもこんなことができる
ある条件に当てはまる要素があるのか調べたい。 Any , All
ある条件でフィルタリングしたい。 Where
要素数を数えたい。 Count
最大、最小、平均、合計が知りたい。 Max , Min , Average , Sum
ある条件に当てはまる最初の要素が欲しい。 First , FirstOrDefault
変換した要素を並べ替えたい。 OrderBy(昇順) , OrderByDescending(降順)
並び替えで同じ評価だったものを並び替えたい。 ThenBy
・
・
・ etc
どうですか?LINQ使いたくなりましたか?
使いたいと思ったそこのあなた!!
使い方をご紹介します
準備
ソースの頭に
using System.Linq;
と書きます。
終了
あとは配列やリストなどのLINQを使いたいものの後ろに .
を点けるとLINQ関数が出てきます。
using追加前 using追加後
とっても簡単。
Unityでlinqを使おう
注意点
・iOSの実機上では特定条件下で例外が発生してしまい動作しない。
(unity editor上では動作するみたい)
→Asset StoreにiOS向けのLINQライブラリはある($40)
→個人的にライブラリを作るのもアリ!
・中途半端に使うとforeach & ifよりも速度が遅くなってしまうことも・・
ToList()は割と重い
まとめ
・LINQを利用すればリストや配列の操作が簡単に書ける!
・簡単に始められる。
・SQLっぽさに慣れるための練習になるかも。
・中途半端に使うとパフォーマンスダウンしてしまう。
(使いどころに気を付ける)
ご清聴ありがとうございました。

More Related Content

ODP
Lispmeetup11
blackenedgold
 
PDF
NSDI '16 Reading: Flexible Networks Session
Daisuke Kotani
 
PDF
NS Prefix - そこから見渡す Swift 3 の景色 #startup_mobile
Tomohiro Kumagai
 
PPTX
基礎構文班20回目 コンストラクタ 継承
XMLProJ2014
 
PDF
ニューラルネットワーク勉強会4
yhide
 
PDF
Gtmf2011 2011.06.07 slideshare
Hiroki Omae
 
PPTX
良くわかるMeta
daichi horio
 
PDF
【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう
Unity Technologies Japan K.K.
 
Lispmeetup11
blackenedgold
 
NSDI '16 Reading: Flexible Networks Session
Daisuke Kotani
 
NS Prefix - そこから見渡す Swift 3 の景色 #startup_mobile
Tomohiro Kumagai
 
基礎構文班20回目 コンストラクタ 継承
XMLProJ2014
 
ニューラルネットワーク勉強会4
yhide
 
Gtmf2011 2011.06.07 slideshare
Hiroki Omae
 
良くわかるMeta
daichi horio
 
【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう
Unity Technologies Japan K.K.
 

Viewers also liked (6)

PDF
【Unite 2017 Tokyo】VRで探り,活用する,人の知覚の仕組み
Unite2017Tokyo
 
PDF
【Unite 2017 Tokyo】もっと気軽に、動的なコンテンツ配信を ~アセットバンドルの未来と開発ロードマップ
Unite2017Tokyo
 
PDF
【Unite 2017 Tokyo】セルシェーダーを使用した3Dキャラアプリの開発事例
Unity Technologies Japan K.K.
 
PDF
LINQ in Unity
Yoshifumi Kawai
 
PDF
UniRx - Reactive Extensions for Unity
Yoshifumi Kawai
 
PDF
Binary Reading in C#
Yoshifumi Kawai
 
【Unite 2017 Tokyo】VRで探り,活用する,人の知覚の仕組み
Unite2017Tokyo
 
【Unite 2017 Tokyo】もっと気軽に、動的なコンテンツ配信を ~アセットバンドルの未来と開発ロードマップ
Unite2017Tokyo
 
【Unite 2017 Tokyo】セルシェーダーを使用した3Dキャラアプリの開発事例
Unity Technologies Japan K.K.
 
LINQ in Unity
Yoshifumi Kawai
 
UniRx - Reactive Extensions for Unity
Yoshifumi Kawai
 
Binary Reading in C#
Yoshifumi Kawai
 
Ad

Similar to Unityでlinqを使おう (20)

PDF
私とUnityとLINQと
Ryota Murohoshi
 
PDF
【20211202_toranoana.deno#3】denoでFFI
虎の穴 開発室
 
PDF
Linq To Fun
deflis
 
PPTX
Boost17 cpplinq
miki_hirofumi
 
PPTX
LINQ 概要 + 結構便利な LINQ to XML
ShinichiAoyagi
 
PDF
Final LINQ extensions III
Kouji Matsui
 
PPTX
第13回スライド.pptx
Penguin49
 
PDF
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3
Fuminobu Takeyama
 
PDF
20141004 ゼウス・ラーニングパワーlinuxサーバ構築セミナー
Takahiro Kujirai
 
ODP
プログラミング言語Cyanの紹介
baban ba-n
 
PDF
開発から見たWindowsの国際化機能
Tadahiro Ishisaka
 
PDF
C#勉強会
hakugakucafe
 
PDF
SchracVisualizeによる波動関数の可視化
dc1394
 
PDF
TypeScriptへの入口
Sunao Tomita
 
PDF
関数型志向Python - LLまつり2013
Esehara Shigeo
 
PDF
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
Google Cloud Platform - Japan
 
PPTX
Androidで動かすはじめてのDeepLearning
Miyoshi Kosuke
 
PDF
C++ lecture-0
sunaemon
 
PDF
[DL輪読会]StyleNet: Generating Attractive Visual Captions with Styles
Deep Learning JP
 
PPTX
C# 3.0 以降
Fujio Kojima
 
私とUnityとLINQと
Ryota Murohoshi
 
【20211202_toranoana.deno#3】denoでFFI
虎の穴 開発室
 
Linq To Fun
deflis
 
Boost17 cpplinq
miki_hirofumi
 
LINQ 概要 + 結構便利な LINQ to XML
ShinichiAoyagi
 
Final LINQ extensions III
Kouji Matsui
 
第13回スライド.pptx
Penguin49
 
今さら聞けない! Linux コマンドラインツールテクニック その1 rev. 3
Fuminobu Takeyama
 
20141004 ゼウス・ラーニングパワーlinuxサーバ構築セミナー
Takahiro Kujirai
 
プログラミング言語Cyanの紹介
baban ba-n
 
開発から見たWindowsの国際化機能
Tadahiro Ishisaka
 
C#勉強会
hakugakucafe
 
SchracVisualizeによる波動関数の可視化
dc1394
 
TypeScriptへの入口
Sunao Tomita
 
関数型志向Python - LLまつり2013
Esehara Shigeo
 
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
Google Cloud Platform - Japan
 
Androidで動かすはじめてのDeepLearning
Miyoshi Kosuke
 
C++ lecture-0
sunaemon
 
[DL輪読会]StyleNet: Generating Attractive Visual Captions with Styles
Deep Learning JP
 
C# 3.0 以降
Fujio Kojima
 
Ad

Recently uploaded (11)

PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
PDF
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 

Unityでlinqを使おう