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
Tilemapのアップデートについて
ryotamurohoshi
0
24
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
Other Decks in Technology
See All in Technology
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.7k
今だから言えるセキュリティLT_Wordpress5.7.2未満を一斉アップデートせよ
cuebic9bic
2
170
cdk initで生成されるあのファイル達は何なのか/cdk-init-generated-files
tomoki10
1
670
ClaudeCode_vs_GeminiCLI_Terraformで比較してみた
tkikuchi
1
1.2k
ポストコロナ時代の SaaS におけるコスト削減の意義
izzii
1
470
Maintainer Meetupで「生の声」を聞く ~講演だけじゃないKubeCon
logica0419
0
110
本当にわかりやすいAIエージェント入門
segavvy
1
460
安定した基盤システムのためのライブラリ選定
kakehashi
PRO
3
130
Digitization部 紹介資料
sansan33
PRO
1
4.5k
Microsoft Defender XDRで疲弊しないためのインシデント対応
sophiakunii
1
320
OpenTelemetryセマンティック規約の恩恵とMackerel APMにおける活用例 / SRE NEXT 2025
mackerelio
3
2k
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
820
Featured
See All Featured
Become a Pro
speakerdeck
PRO
29
5.4k
A Modern Web Designer's Workflow
chriscoyier
695
190k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
520
What's in a price? How to price your products and services
michaelherold
246
12k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Designing Experiences People Love
moore
142
24k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.5k
Faster Mobile Websites
deanohume
308
31k
Writing Fast Ruby
sferik
628
62k
The Straight Up "How To Draw Better" Workshop
denniskardys
235
140k
Designing for humans not robots
tammielis
253
25k
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ճ