Submit Search
脱UniRx&Croutineから始めるUniTask
0 likes
402 views
E
Euglenaching
某所で開催されたLT会の登壇資料です。軽く追記してます。
Technology
Read more
1 of 31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Most read
15
16
17
18
19
20
21
22
23
24
25
26
Most read
27
28
29
30
Most read
31
More Related Content
PPTX
未来のプログラミング技術をUnityで -UniRx-
torisoup
PDF
UniTask入門
torisoup
PPTX
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
Unity Technologies Japan K.K.
PDF
GTMF 2017:Unityプロファイリングマニアクス ユニティ・テクノロジーズ・ジャパン合同会社
Game Tools & Middleware Forum
PDF
Unityではじめるオープンワールド制作 エンジニア編
Unity Technologies Japan K.K.
PDF
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
Unity Technologies Japan K.K.
PDF
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
PPTX
【CEDEC2018】Scriptable Render Pipelineを使ってみよう
Unity Technologies Japan K.K.
未来のプログラミング技術をUnityで -UniRx-
torisoup
UniTask入門
torisoup
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
Unity Technologies Japan K.K.
GTMF 2017:Unityプロファイリングマニアクス ユニティ・テクノロジーズ・ジャパン合同会社
Game Tools & Middleware Forum
Unityではじめるオープンワールド制作 エンジニア編
Unity Technologies Japan K.K.
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
Unity Technologies Japan K.K.
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UnityTechnologiesJapan002
【CEDEC2018】Scriptable Render Pipelineを使ってみよう
Unity Technologies Japan K.K.
What's hot
(20)
PPTX
UnityでUI開発を高速化した件
Grenge, Inc.
PDF
Unityアニメーションシステムの 今と未来の話
Unity Technologies Japan K.K.
PDF
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
Unity Technologies Japan K.K.
PDF
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
UnityTechnologiesJapan002
PDF
インタフェース完全に理解した
torisoup
PDF
Unityでオニオンアーキテクチャ
torisoup
PDF
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Yoshifumi Kawai
PDF
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
UnityTechnologiesJapan002
PDF
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
Unity Technologies Japan K.K.
PDF
【Unity道場】新しいPrefabワークフロー入門
Unity Technologies Japan K.K.
PDF
Unityでパフォーマンスの良いUIを作る為のTips
Unity Technologies Japan K.K.
PPTX
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
DeNA
PDF
Unity開発で使える設計の話+Zenjectの紹介
torisoup
PDF
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
Tatsuhiko Yamamura
PDF
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る! | UNREAL FEST EXTREME 2020 WINTER
エピック・ゲームズ・ジャパン Epic Games Japan
PPTX
プログラマが欲しい仕様書とは
Katsutoshi Makino
PPTX
猫でも分かるUMG
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
ドメイン駆動設計をゲーム開発に活かす
増田 亨
PDF
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
エピック・ゲームズ・ジャパン Epic Games Japan
PPTX
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
U-dai Yokoyama
UnityでUI開発を高速化した件
Grenge, Inc.
Unityアニメーションシステムの 今と未来の話
Unity Technologies Japan K.K.
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
Unity Technologies Japan K.K.
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
UnityTechnologiesJapan002
インタフェース完全に理解した
torisoup
Unityでオニオンアーキテクチャ
torisoup
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Yoshifumi Kawai
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
UnityTechnologiesJapan002
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
Unity Technologies Japan K.K.
【Unity道場】新しいPrefabワークフロー入門
Unity Technologies Japan K.K.
Unityでパフォーマンスの良いUIを作る為のTips
Unity Technologies Japan K.K.
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
DeNA
Unity開発で使える設計の話+Zenjectの紹介
torisoup
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
Tatsuhiko Yamamura
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る! | UNREAL FEST EXTREME 2020 WINTER
エピック・ゲームズ・ジャパン Epic Games Japan
プログラマが欲しい仕様書とは
Katsutoshi Makino
猫でも分かるUMG
エピック・ゲームズ・ジャパン Epic Games Japan
ドメイン駆動設計をゲーム開発に活かす
増田 亨
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
エピック・ゲームズ・ジャパン Epic Games Japan
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
U-dai Yokoyama
Ad
Similar to 脱UniRx&Croutineから始めるUniTask
(20)
PDF
Weeyble async 181009_tukky
shotaueda3
PPTX
UnityでもTaskが使いたい!~MinimumAsyncBridgeの紹介~
Shoichi Yasui
PDF
UniRx - Reactive Extensions for Unity
Yoshifumi Kawai
PDF
Observableで非同期処理
torisoup
PDF
Async design with Unity3D
Kouji Hosoda
PDF
いまさら恥ずかしくてAsyncをawaitした
Kouji Matsui
PDF
UniRx完全に理解した
torisoup
PDF
パターンでわかる! .NET Coreの非同期処理
Kouji Matsui
PPTX
async/await のしくみ
信之 岩永
PDF
俺はUniRxで行く
Kakohiroyuki
PDF
async/awaitダークサイド is 何
Kouji Matsui
PPTX
UniRx勉強会 reactive extensions inside(公開用)
wilfrem
PDF
非同期の時代がやってくる!
Takaaki Suzuki
PPTX
Unity の Coroutine は何が便利なのか
Yu Takahashi
PDF
Async Enhancement
kamiyam .
PDF
これからの「async/await」の話をしよう
Kouji Matsui
PDF
async/await deep dive
Takaaki Suzuki
PPTX
モダン JavaScript における非同期処理 - Promise, async/await -
Kazunori Hashikuchi
PDF
Androidの非同期
risa buto
PDF
async/await不要論
bleis tift
Weeyble async 181009_tukky
shotaueda3
UnityでもTaskが使いたい!~MinimumAsyncBridgeの紹介~
Shoichi Yasui
UniRx - Reactive Extensions for Unity
Yoshifumi Kawai
Observableで非同期処理
torisoup
Async design with Unity3D
Kouji Hosoda
いまさら恥ずかしくてAsyncをawaitした
Kouji Matsui
UniRx完全に理解した
torisoup
パターンでわかる! .NET Coreの非同期処理
Kouji Matsui
async/await のしくみ
信之 岩永
俺はUniRxで行く
Kakohiroyuki
async/awaitダークサイド is 何
Kouji Matsui
UniRx勉強会 reactive extensions inside(公開用)
wilfrem
非同期の時代がやってくる!
Takaaki Suzuki
Unity の Coroutine は何が便利なのか
Yu Takahashi
Async Enhancement
kamiyam .
これからの「async/await」の話をしよう
Kouji Matsui
async/await deep dive
Takaaki Suzuki
モダン JavaScript における非同期処理 - Promise, async/await -
Kazunori Hashikuchi
Androidの非同期
risa buto
async/await不要論
bleis tift
Ad
脱UniRx&Croutineから始めるUniTask
1.
脱UniRx&Croutineから始めるUniTask 11/9
2.
※ ほぼUnity/C#の話しかしません
3.
話す内容 ● 非同期処理 ● コルーチン ●
UniRx ● UniTask ● async/await
4.
非同期処理
5.
非同期処理
6.
の前に
7.
同期処理(sync) 処理が終わって結果が返ってくるまで待つ。
8.
非同期処理(async) 処理が終わるのを待たずに次の処理を実行する
9.
Unityの非同期処理 ● MonoBehaviour.Invoke ● コルーチン ●
Task ● DOTween ● UniRx ● UniTask
10.
Unityの非同期処理 ● MonoBehaviour.Invoke ● コルーチン ●
Task ● DOTween ● UniRx ● UniTask
11.
UniTask ● UniRxの作者であるneueccさんが公開しているOSS ● 実務での採用実績もたくさん ●
素では使いにくい Task をUnity向けに1から実装したもの(Task-like) ● Unity独自の非同期処理を async / await で待てる ● めっちゃ軽い(ゼロアロケーション)
13.
Q. async/await を使うと
Unity の API 使えないんじゃないの? A. 使えます
14.
async / await ●
名前の通り非同期処理を待つための機構 ● 非同期処理 ≠ マルチスレッド ○ 相性は良いが非同期とマルチスレッドは違う話 ○ Unity 固有の非同期処理はシングルスレッドで実現されている ● 非同期処理の連結を手続き的に書ける ○ Unityコルーチンのyield return に近い ○ 同期処理とあまり変わらない構文 で非同期処理を書くことができる ● UniTaskを使えばUnityでもガンガン使えて超便利 ○ UniTaskはPlayerLoopを使って動いている
15.
脱Coroutine
16.
コルーチン UniTask async/awaitの書き方はコルーチンに似てる ● 非同期メソッドには
async 修飾子を付ける ● 非同期メソッドを待つときは await を付ける ● asyncをつけたメソッドの中でしかawaitは使えない
17.
コルーチンにはできないこともasync/awaitならできる ● StartCoroutineが無くても動く ● ジェネリックで型を指定して値をreturnで返せる
18.
コルーチンにはできないこともasync/awaitならできる ● try-catchでエラーハンドリングできる ○ try構文の中ではyieldは使えないがawaitはできる ○
エラーの種類で処理変えたり
19.
コルーチンにはできないこともasync/awaitならできる ● 並行処理も待てる ○ コルーチンには複数の非同期処理を並行で待つ機能はない ○
UniTaskでは WhenAll や WhenAny を使う
20.
脱UniRx
21.
UniRx ● neueccさんが公開している言わずと知れたUnityのRxライブラリ ● オブザーバーパターンをベースに作られている ●
C#のeventの上位互換みたいなやつ
22.
Observable.Timer系の出番はもうない DelayとかDelayFrameとか超便利 明らかにObservableで書いたときよりスッキリしてる
23.
結果が1つものはUniTask化すると良い async/await は 結果が必ず1つになるので
Firstオペレータ を使う前提のストリームや AsyncSubject は UniTask に変えたほうが扱いやすい 【例】 ● オブジェクトの初期化 ● ゲーム開始・終了の通知 ● 死亡通知 ● etc...
24.
UniRx, UniTask, コルーチンの使い分け ●
基本は async/await での実装を考える ○ async/awaitでは表現できそうになかったらRx ● 軽い指標として ○ 結果が1つのものは async/await ○ 結果が不定(0, 1, ∞)のものは Rx(イベントとか) ● WaitForEndOfFrame を使うときはコルーチン ○ PlayerLoopの外で動くのでUniTaskでどうこうできない ○ UniTask.WaitForEndOfFrame というメソッドがあるけどちゃんと 動かないので注意
25.
キャンセル ● 非同期処理はキャンセルがめっちゃ大事 ○ UniRx…IDisposable.Dispose ○
コルーチン…StopCoroutine,GameObjectのDestroy ● UniTaskのキャンセルはCancellationTokenを使う ○ System.Threadingに定義されている(C#標準) ○ Task,ValueTaskと同じ
26.
● CancellationTokenがキャンセル命令を検知して例外をスローする ○ OperationCanceledException ●
キャンセル命令はCancellationTokenSourceのCancelメソッドで行う キャンセル
27.
● MonoBehaviourの場合はGetCancellationTokenOnDestroy()が便利 ○ OnDestroyのタイミングでキャンセルするCancellationTokenを取得できる キャンセル
28.
● キャンセル… OperationCanceledException ●
失敗…OperationCanceledException以外の例外 キャンセルは上流まで伝播させる必要がある 失敗とキャンセル
29.
今回話せなかったけど大事なこと ● 色々なもの to
UniTask ● ファクトリ,インスタンスメソッド ● UniTaskCompletionSource ● UniTaskVoid ● UniTaskTracker ● UniTaskAsyncEnumerable ● etc…
30.
まとめ ● 非同期処理は結果を待たずに次の処理を実行すること ● 非同期処理
≠ マルチスレッド ● UniTask を使えば Unity でも async/await が快適に使える ● Rxでは煩わしかった深いネストや非同期処理の直列実行をasync/awaitで楽に書 くことができる ● キャンセル大事!サボらない ● 便利機能たくさん
31.
おすすめの本 UniRx/UniTask完全理解 より高度なUnity C#プログラミング 著作: 打田恭平