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
46
私とUnityとLINQと
# 私とUnityとLINQと
## @RyotaMurohoshi
### 2014/12/20 プログラミング生放送勉強会 第32回
※もともとはSlideShareで公開していた資料です
RyotaMurohoshi
December 20, 2014
Tweet
Share
More Decks by RyotaMurohoshi
See All by RyotaMurohoshi
Tilemapのアップデートについて
ryotamurohoshi
0
46
Unityの合同同人誌や合同商業誌を書いてる僕は感想やレビューや評価が欲しい
ryotamurohoshi
0
550
Unity 2021.1での Unityパッケージの名称変更について
ryotamurohoshi
0
740
Odin Validationはいいぞ!
ryotamurohoshi
2
1k
Tilemapはいいぞ!2020 〜すごいぞ、プロジェクト専用拡張Brush〜
ryotamurohoshi
0
2.4k
Unityでも、新しいC#
ryotamurohoshi
0
1.4k
Riderはいいぞ!
ryotamurohoshi
1
3.6k
Riderのススメ〜俺はRiderここが好き〜
ryotamurohoshi
1
2.5k
Unity開発者に伝えたい.NETのこと
ryotamurohoshi
4
38k
Other Decks in Technology
See All in Technology
Kubernetes self-healing of your workload
hwchiu
0
280
[OCI Skill Mapping] AWSユーザーのためのOCI – IaaS編(Compute/Storage/Networking) (2025年10月8日開催)
oracle4engineer
PRO
1
100
いまからでも遅くない!SSL/TLS証明書超入門(It's not too late to start! SSL/TLS Certificates: The Absolute Beginner's Guide)
norimuraz
0
290
Liquid AI Hackathon Tokyo プレゼン資料
aratako
0
120
「魔法少女まどか☆マギカ Magia Exedra」の多様なバトルの開発を柔軟かつ効率的に実現するためのPure C#とUnityの分離について
gree_tech
PRO
0
130
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.2k
AIエージェント入門 〜基礎からMCP・A2Aまで〜
shukob
0
120
難しいセキュリティ用語をわかりやすくしてみた
yuta3110
0
340
ローカルLLMとLINE Botの組み合わせ その2(EVO-X2でgpt-oss-120bを利用) / LINE DC Generative AI Meetup #7
you
PRO
0
120
Introduction to Sansan Meishi Maker Development Engineer
sansan33
PRO
0
310
AI時代におけるデータの重要性 ~データマネジメントの第一歩~
ryoichi_ota
0
700
ソースを読むプロセスの例
sat
PRO
15
9.5k
Featured
See All Featured
Optimizing for Happiness
mojombo
379
70k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
54k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.7k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.5k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Rails Girls Zürich Keynote
gr2m
95
14k
Code Reviewing Like a Champion
maltzj
526
40k
Automating Front-end Workflow
addyosmani
1371
200k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
115
20k
Why Our Code Smells
bkeepers
PRO
340
57k
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ճ