Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
私とUnityとLINQと
Search
RyotaMurohoshi
December 20, 2014
Technology
0
41
私とUnityとLINQと
# 私とUnityとLINQと
## @RyotaMurohoshi
### 2014/12/20 プログラミング生放送勉強会 第32回
※もともとはSlideShareで公開していた資料です
RyotaMurohoshi
December 20, 2014
Tweet
Share
More Decks by RyotaMurohoshi
See All by RyotaMurohoshi
Unityの合同同人誌や合同商業誌を書いてる僕は感想やレビューや評価が欲しい
ryotamurohoshi
0
530
Unity 2021.1での Unityパッケージの名称変更について
ryotamurohoshi
0
710
Odin Validationはいいぞ!
ryotamurohoshi
2
960
Tilemapはいいぞ!2020 〜すごいぞ、プロジェクト専用拡張Brush〜
ryotamurohoshi
0
2.4k
Unityでも、新しいC#
ryotamurohoshi
0
1.3k
Riderはいいぞ!
ryotamurohoshi
1
3.5k
Riderのススメ〜俺はRiderここが好き〜
ryotamurohoshi
1
2.4k
Unity開発者に伝えたい.NETのこと
ryotamurohoshi
4
37k
ImportedLinqのススメ
ryotamurohoshi
0
1.4k
Other Decks in Technology
See All in Technology
20250705 Headlamp: 專注可擴展性的 Kubernetes 用戶界面
pichuang
0
270
AI時代の開発生産性を加速させるアーキテクチャ設計
plaidtech
PRO
3
160
PO初心者が考えた ”POらしさ”
nb_rady
0
210
AI専用のリンターを作る #yumemi_patch
bengo4com
5
4.3k
ビズリーチが挑む メトリクスを活用した技術的負債の解消 / dev-productivity-con2025
visional_engineering_and_design
3
7.7k
Operating Operator
shhnjk
1
590
Beyond Kaniko: Navigating Unprivileged Container Image Creation
f30
0
130
Core Audio tapを使ったリアルタイム音声処理のお話
yuta0306
0
190
Flutter向けPDFビューア、pdfrxのpdfium WASM対応について
espresso3389
0
130
american airlines®️ USA Contact Numbers: Complete 2025 Support Guide
supportflight
1
110
2025-07-06 QGIS初級ハンズオン「はじめてのQGIS」
kou_kita
0
170
AWS認定を取る中で感じたこと
siromi
1
190
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
234
140k
The Cost Of JavaScript in 2023
addyosmani
51
8.5k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Making Projects Easy
brettharned
116
6.3k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
We Have a Design System, Now What?
morganepeng
53
7.7k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
The Pragmatic Product Professional
lauravandoore
35
6.7k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
690
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
740
Side Projects
sachag
455
42k
Transcript
࣭Ͱ͢ʂ
Unity ͍ͬͯΔํʁ
C# όϦόϦ͍ͬͯΔํʁ
LINQ ͬͯͨํʁ
LINQ ͍ͬͯΔํʁ
͋Γ͕ͱ͏͍͟͝·͢
ࢲͱUnityͱLINQͱ @RyotaMurohoshi 2014/12/20&ϓϩάϥϛϯάੜ์ૹษڧձ&ୈ32ճ
͖ͬ͞LINQͷͰ·ͨ͠Ͷ (※ࠓɺLINQ&to&Objectsͷ͔͠͠·ͤΜɻ)
͓͞Β͍
LINQΛ͏ͱͳʹ͕͍͍͔
ίʔυ͕؆ܿʹͳΔɻಡΈ͘͢ͳΔɻ
͏ͪΐͬͱݴ͏ͱɺ ྻɺϦετɺσΟΫγϣφϦ ͜ΕΒͳͲΛѻ͏ίʔυ͕ ؆ܿʹͳΔɻಡΈ͘͢ͳΔɻ
ΠϝʔδΘ͖·͢ʁ
RPGͷϓϨΠϠʔΛ࢘Δɺ͜ΜͳΫϥε͕͋Δͱͯ͠ɺ public class Player { public int HP { get;
set; } public string Name { get; set; } /* ଞͳΜ͔͍Ζ͍Ζ */ }
ࢮΜͰ͍Δ(HP͕0ҎԼ)ͷ ϓϨΠϠʔͷΛ͑Α͏ʂ
Ͳ͏ॻ͘ʁ
LINQΛ͏ͱίʔυ͕͘ͳΔʂ ͑Δ෦6ߦ // LINQΛΘͳ͍ͱ List<Player> playerList = GetPlayerList (); int
deadPlayerCount = 0; foreach (Player player in playerList) { if(player.HP <= 0) { deadPlayerCount++; } }
LINQΛ͏ͱίʔυ͕͘ͳΔʂ ͨͬͨ1ߦʹʂ͍ʂ // LINQΛ͏ͱ List<Player> playerList = GetPlayerList (); int
deadPlayerCount = playerList.Count (player => player.HP <= 0);
LINQΛ͏ͱίʔυ͕͘ͳΔʂ // LINQΛΘͳ͍ͱ int deadPlayerCount = 0; foreach (Player player
in playerList) { if(player.HP <= 0) { deadPlayerCount++; } } // LINQΛ͏ͱ int deadPlayerCount = playerList.Count (player => player.HP <= 0);
ѹత͡Όͳ͍͔ʂ
͍͚ͩ͡Όͳ͍ʂ ಡΈ͍͢ʂ
͖ͬ͞ͷ2ͭͷίʔυ ԿΛ͍ͯ͠Δͷ͔ௐΔ࣌ Ͳ͏ಡΉͷ͔ʁ
͜ͷίʔυɺͲ͏ಡΈ·͢ʁ // LINQΛΘͳ͍ͱ List<Player> playerList = GetPlayerList (); int deadPlayerCount
= 0; foreach (Player player in playerList) { if(player.HP <= 0) { deadPlayerCount++; } }
intܕͷdeadPlayerCountΛ0ͰॳظԽ foreachจͰplayerListΛ·Θ͢ ͠ཁૉͷplayerͷHP͕0ҎԼͳΒ deadPlayerCountΛΠϯΫϦϝϯτ
͋ɺͭ·Γʂ HP͕0ҎԼͷϓϨΠϠʔΛ͑Δͷ͔ʂ
ͬͯͳΔ 1ճ಄ͷதͰม͕ඞཁ
ҰํLINQʁͲ͏ಡΈ·͢ʁ // LINQΛ͏ͱ int deadPlayerCount = playerList.Count (player => player.HP
<= 0);
intܕͷdeadPlayerΛ࣍ͷͰॳظԽ͠Ζʂ playerListͷ࣍ͷ݅Λຬͨ͢ཁૉͩʂ ݅ཁૉͷHP͕0ҎԼͩʂ
΄΅ҙຯతʹɺ ʮHP͕0ҎԼͷϓϨΠϠʔΛ͑Ζʂʯ ࠨ͔ΒӈʹૉʹಡΊΔʂ
foreachจɺifจͷ ʮͲ͏ॲཧ͍ͯ͠Δ͔ʯ͕ॻ͔Ε͍ͯΔ LINQͰॻ͔Εͨͷ ʮԿ͕͍͔ͨ͠ʯ͕ॻ͔Ε͍ͯΔ
Ͳ͏Ͱ͔͢ʁ͜Μͳײ͡Ͱɺ ྻɺϦετɺσΟΫγϣφϦͳͲΛ ѻ͏ίʔυ͕͘ಡΈ͘͢ॻ͚·͢Αʂ
LINQ͍͍Ͱ͠ΐʂ
ୈ̍෦ɺ
ࠓͷςʔϚɺʮࢲͱUnityͱLINQͱʯ Unityͷͯ͠ͳ͍ʂ
ͯ͞ɺUnityίϛϡχςΟͰͷLINQ ͋Μ·Γྲྀߦͬͯͳ͍ؾ͕͠·͢ ͍ɺษڧձͰLINQ͍ͬͯΔਓͬͯฉ͘ͱ ͍ͬͯΔਓͷׂ߹͕গͳ͍ΜͰ͢
ཧ༝ͦͷ1 ͍ΖΜͳਓ͕UnityΛ͏͔Β
ୈ2෦ɺॳֶऀͱLINQ
Unity͍Ζ͍Ζ֮͑Δ͜ͱ͕͋Δ ಛʹϓϩάϥϛϯάॳΊͯͱ͍͏ਓ ͍Ζ͍ΖΒͳ͍ͱ͍͚ͳ͍ ·͊ɺLINQޙճ͠ʹͳΔͷํͳ͍ʁ
͋ͱɺ LINQΛ͔ͬ͠ΓཧղͦΜͳʹ؆୯͡Όͳ͍ ʮC#ͷؔ࿈ݴޠཁૉ͕ଟ͍͔Βʯ
• σϦήʔτ • ಗ໊ؔ"(ΠϯϥΠϯͳࣜ"or"εςʔτϝϯτ) • ϥϜμࣜͷॻ͖ํ • ڞ௨σϦήʔτܕ • ԆධՁ
• ֦ுϝιου • ੩తΫϥε • δΣωϦοΫ"(ͳΫϥεɺΠλʔϑΣʔεɺϝιου)" • ܕਪ • IEnumerable<T>ͱ"IEnumerator<T>
• yield • ಗ໊ܕ
͍ɺશ෦શʹཧղ͠ͳ͍͍͚ͯ͘Ͳ ͱΓ͋͑ͣग़͖ͯ·͢
ಛʹ࣍ͷͱಉ࣌ʹษڧͯ͠ʮΘ͔ΜͶʔʯ ͯͳΔਓ͕ଟ͍ؾ͕͠·͢ • σϦήʔτ • ϥϜμࣜͷॻ͖ํ • ڞ௨σϦήʔτܕ
͍ͯ͏͔ࢲͰ͢
·ͣLINQͷϝϦοτ ʮ͘ಡΈ͘͢ͳΔʯ Λ͑Δͷ͕େࣄͩͱࢥ͍ͬͯ·͢
͋·ΓC#Λৄ͘͠ͳ͍ਓʹLINQΛڭ͑Δࡍɺ • Where • Select ࠷ॳͷϝιου͕͜ΕϕετͰͳ͍ͱࢥ͍·͢ɻ
• ԆධՁ • IEnumerable<T> Λಉ࣌ʹڭ͑ͳ͍ͱ͍͚ͳ͍͔Β
ٯʹC#ΊͬͪΌৄ͍͠ਓʹͳΒ WhereͱSelect͕ྑ͍ͱࢥ͍·͢ʂ
ڭ͑ΔͷͳΔ͘ಉ࣌Ͱͳ͘ɺ ͻͱͭͣͭʂ
ͱ͜ΖͰ
ຊAndroidͷձUnity෦ΑΓ C87ʹͯUNIBOOK2 500ԁͰൢച͠·͢ (CD$or$όνϟʔνέοτ)
ࢲUNIBOOK2ʹॻ͖·ͨ͠ ͙͑͢ΔΦεεϝ!LINQ!ϝιου!4!બ
͋͑ͯͳΔ͘C#ͷݴޠཁૉΛొͤͣ͞ɺ ࣍ͷϝιουΛհ Count Any All First
UNIBOOK2͓ئ͍͠·͢ʂ ͍ΖΜͳςʔϚ͕Γͩ͘͞Μʂ ͜͏͝ظʂ ৄ͘͠ຊAndroidͷձUnity෦ͷϖʔδͰʂ
ୈ̎෦ɺ
LINQษڧ͍ͨ͠ͳΒ ྑ͍ຊ͍ͬͺ͍͋Γ·͢Αʂ ࢲ͕ʮ·ͣɺ͜͏͍͏ͷ͕͋ͬͨΒʯͱ͍͏ຊΛॻ͖·ͨ͠
ୈ̏෦ɺUnityͱiOSͱLINQ
Unity+iOSͩͱɺ͍Ζ͍Ζ͋ͬͯ ಥવΤϥʔʹͳΔ͜ͱ͕͋Γ·͢ (*AOTίϯύΠϧؔ࿈)
೦ͳ͕ΒLINQͳΓ·͢
ͭΒ͍
UnityͰ͋Μ·ΓLINQ͕ྲྀߦ͍ͬͯͳ͍ʁ ཧ༝ͦͷ2 iOSͩͱࢮ͵͜ͱ͕͋Δ͔Β
ͭΒ͍
ͦΕΛղܾ͍ͨ͠ʂ ͦΕ͕ඪͳϥΠϒϥϦΛ࡞ʂ ·ͩϕʔλͰ͢ʂʂʂ
UniLinq
ଓ͖ɺC#ΞυΧϨͰʂ
ࢲͱUnityͱLINQͱ @RyotaMurohoshi 2014/12/20&ϓϩάϥϛϯάੜ์ૹษڧձ&ୈ32ճ