Submit Search
Unity の Coroutine は何が便利なのか
Download as PPTX, PDF
0 likes
262 views
Yu Takahashi
意外と知られていないコルーチンの実態についてまとめました
Presentations & Public Speaking
Read more
1 of 20
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
More Related Content
Similar to Unity の Coroutine は何が便利なのか
(20)
PPTX
Unity/CSharp 1 - pptx
tagawakiyoshi
PPTX
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
DeNA
PPTX
Unity/CSharp 2
tagawakiyoshi
PPTX
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
Unity Technologies Japan K.K.
PDF
.NET Coreとツール類の今
Yuki Igarashi
PDF
猫でも分かるUE4.22から入ったSubsystem
エピック・ゲームズ・ジャパン Epic Games Japan
PPTX
Unityで使える C# 6.0~と .NET 4.6
信之 岩永
KEY
Windowsにpythonをインストールしてみよう
Kenji NAKAGAKI
KEY
Unityの夕べ in Fukuoka
Shinobu Izumi
PPTX
Unity/CSharp 3
tagawakiyoshi
PDF
Androidテスティング実践3 ユニットテスト・CI編
株式会社 NTTテクノクロス
PPTX
Unity ゲーム開発
Katsutoshi Makino
PPTX
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
NTT DATA Technology & Innovation
PDF
Visual Studio OnlineとUnityを使ったバージョン管理と継続的インテグレーション
Kaoru NAKAMURA
PDF
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
Kaoru NAKAMURA
PPTX
20171206 Sony Neural Network Console 活用テクニック
Sony Network Communications Inc.
PDF
Code igniterでテスト駆動開発 資料作成中
Takako Miyagawa
PDF
Dockerで.NET Core 3.0 GUIアプリを動かす話
You&I
PDF
UnityによるHoloLensアプリケーション入門
Yuichi Ishii
PDF
Code ignitertalk 01
Takako Miyagawa
Unity/CSharp 1 - pptx
tagawakiyoshi
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
DeNA
Unity/CSharp 2
tagawakiyoshi
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
Unity Technologies Japan K.K.
.NET Coreとツール類の今
Yuki Igarashi
猫でも分かるUE4.22から入ったSubsystem
エピック・ゲームズ・ジャパン Epic Games Japan
Unityで使える C# 6.0~と .NET 4.6
信之 岩永
Windowsにpythonをインストールしてみよう
Kenji NAKAGAKI
Unityの夕べ in Fukuoka
Shinobu Izumi
Unity/CSharp 3
tagawakiyoshi
Androidテスティング実践3 ユニットテスト・CI編
株式会社 NTTテクノクロス
Unity ゲーム開発
Katsutoshi Makino
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
NTT DATA Technology & Innovation
Visual Studio OnlineとUnityを使ったバージョン管理と継続的インテグレーション
Kaoru NAKAMURA
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
Kaoru NAKAMURA
20171206 Sony Neural Network Console 活用テクニック
Sony Network Communications Inc.
Code igniterでテスト駆動開発 資料作成中
Takako Miyagawa
Dockerで.NET Core 3.0 GUIアプリを動かす話
You&I
UnityによるHoloLensアプリケーション入門
Yuichi Ishii
Code ignitertalk 01
Takako Miyagawa
Unity の Coroutine は何が便利なのか
1.
UnityのCoroutine は何が便利なのか
2.
注意事項 ● ここで扱う”Coroutine”はUnityのコルーチンのことを指します。 ● 学習しながら作った資料の為、不正確な記述があるかもしれません。指摘・ 議論などのご協力をお願いします。
3.
この発表のターゲット ● Unity のコルーチンを普段から使っている人 ●
C#の標準的な機能を理解している人 Unity をこれから学習する人には厳しい内容かも…
4.
Coroutineってどんなもの?
5.
Coroutineの実装
6.
Corutine がやってることは C#
の IEnumerator ● Unityの独自実装ではない ● IEnumeratorを拡張したもの https://docs.microsoft.com/ja-jp/dotnet/api/system.collections.ienumerator?view=netcore-3.1
7.
では何が便利になったのか
8.
IEnumeratorの定義 ● 列挙子を段階的に進める MSDNより抜粋 https://msdn.microsoft.com/ja- jp/library/system.collections.ienumerator(v=vs.110).aspx
9.
IEnumeratorだけで Coroutineするとこうなる ● 呼び出し元が必要 ● 適切なタイミングの呼び出しが必要
10.
Coroutineすごい! StartCoroutineすればUnityが管理してくれる! ・処理が終わるまで毎ループ回してくれる! ・処理の中断・続行をIEnumerator内 だけで実現できる!
11.
Coroutineの仕様
12.
CoroutineはMonoBehaviorによって実現している ● StartCoroutineもStopCoroutineもMonoBehaviorの関数 ● StartCoroutineを介さなければ普通のC#のIEnumerator ●
つまりMonoBehaviorのプリセットの関数からIEnumeratorにアクセスするこ とによってCoroutineが実現する 参考:Unity公式ドキュメント https://docs.unity3d.com/ScriptReference/MonoBehaviour.html
13.
意外と知らないコルーチンの動き
14.
Q.コルーチンはマルチスレッドか? ● NO! ○ MonoBehaviorがシングルスレッドで実装されているため
15.
Q.コルーチン動作中にDestroyしたらどうなる? ObjectHoge Destroy(ObjectHoge) A.停止する コルーチン中のMonoBehaviourが破壊されるため Case1: StartCoroutine(Coroutine) ? 自身でStartCoroutine コルーチン中にDestroy
16.
Q.コルーチン動作中にDestroyしたらどうなる? ObjectFuga Case2: ObjectHoge Destroy(ObjectFuga)StartCoroutine(ObjectFuga.Corou tine()) ? ObjectHoge ObjectHogeからObjectFugaを StartCoroutine コルーチン中のオブジ ェクトをDestroy ObjectHogeを残す A.続行する! StartCoroutineしたMonoBehaviourが
17.
Q.コルーチン動作中にDestroyしたらどうなる? ObjectFuga Case3: ObjectHoge Destroy(ObjectHoge)StartCoroutine(ObjectFuga.Corou tine) ? ObjectFuga ObjectHogeからObjectFugaを StartCoroutine 呼び出し元をDestroy ObjectFugaを残す A.停止する! StartCoroutineしたMonoBehaviourが 破壊されたため
18.
結論 ● IEnumeratorそれ自体は列挙子をMoveNextするだけ ● StartCoroutineによって非同期っぽくIEnumeratorを扱うことができる ●
コルーチンの挙動はStartCoroutineの呼び出し側が握っているので、呼び出し たMonoBehaivourが破壊されるとコルーチンは停止する
19.
参考 ● Unityのコルーチンの分解、或いはUniRxのMainThreadDispatcherについて (http://neue.cc/2014/12/18_499.html) ● G-MODE
Engineers' Blog (http://tech.gmodecorp.com/post/106028420751/startcoroutine%E3%81%A F%E4%BD%95%E3%82%92%E3%81%97%E3%81%A6%E3%81%84%E3 %82%8B%E3%81%AE%E3%81%8B%E4%BD%9C%E3%81%A3%E3%81% A6%E5%AD%A6%E3%81%B6%E3%82%B3%E3%83%AB%E3%83%BC%E 3%83%81%E3%83%B3%E3%81%AE%E4%BB%95%E7%B5%84%E3%81 %BF%E5%89%8D%E7%B7%A8)
20.
ありがとうございました
Download