Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
私とUnityとLINQと
Search
RyotaMurohoshi
December 20, 2014
Technology
0
47
私と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
55
Unityの合同同人誌や合同商業誌を書いてる僕は感想やレビューや評価が欲しい
ryotamurohoshi
0
560
Unity 2021.1での Unityパッケージの名称変更について
ryotamurohoshi
0
760
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.6k
Unity開発者に伝えたい.NETのこと
ryotamurohoshi
4
38k
Other Decks in Technology
See All in Technology
寫了幾年 Code,然後呢?軟體工程師必須重新認識的 DevOps
cheng_wei_chen
1
1.5k
Identity Management for Agentic AI 解説
fujie
0
210
AlmaLinux + KVM + Cockpit で始めるお手軽仮想化基盤 ~ 開発環境などでの利用を想定して ~
koedoyoshida
0
120
100以上の新規コネクタ提供を可能にしたアーキテクチャ
ooyukioo
0
150
2025-12-18_AI駆動開発推進プロジェクト運営について / AIDD-Promotion project management
yayoi_dd
0
130
MySQLとPostgreSQLのコレーション / Collation of MySQL and PostgreSQL
tmtms
1
1.1k
30分であなたをOmniのファンにしてみせます~分析画面のクリック操作をそのままコード化できるAI-ReadyなBIツール~
sagara
0
180
日本Rubyの会: これまでとこれから
snoozer05
PRO
4
200
20251219 OpenIDファウンデーション・ジャパン紹介 / OpenID Foundation Japan Intro
oidfj
0
290
20251218_AIを活用した開発生産性向上の全社的な取り組みの進め方について / How to proceed with company-wide initiatives to improve development productivity using AI
yayoi_dd
0
360
AWSを使う上で最低限知っておきたいセキュリティ研修を社内で実施した話 ~みんなでやるセキュリティ~
maimyyym
2
1.8k
シニアソフトウェアエンジニアになるためには
kworkdev
PRO
3
200
Featured
See All Featured
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
27
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
70k
Typedesign – Prime Four
hannesfritz
42
2.9k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
0
200
The Pragmatic Product Professional
lauravandoore
37
7.1k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
110
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Building the Perfect Custom Keyboard
takai
1
660
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
Testing 201, or: Great Expectations
jmmastey
46
7.8k
Six Lessons from altMBA
skipperchong
29
4.1k
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ճ