Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
torisoup
PPTX, PDF
91,203 views
はじめてのUniRx
2015/06/19 UniRx勉強会での発表資料です
Technology
◦
Read more
75
Save
Share
Embed
Embed presentation
Download
Downloaded 230 times
1
/ 94
2
/ 94
3
/ 94
4
/ 94
5
/ 94
6
/ 94
7
/ 94
8
/ 94
9
/ 94
10
/ 94
11
/ 94
12
/ 94
13
/ 94
14
/ 94
15
/ 94
16
/ 94
17
/ 94
18
/ 94
19
/ 94
20
/ 94
21
/ 94
22
/ 94
23
/ 94
24
/ 94
25
/ 94
26
/ 94
27
/ 94
28
/ 94
29
/ 94
30
/ 94
31
/ 94
32
/ 94
33
/ 94
34
/ 94
35
/ 94
36
/ 94
37
/ 94
38
/ 94
39
/ 94
40
/ 94
41
/ 94
42
/ 94
43
/ 94
44
/ 94
45
/ 94
46
/ 94
47
/ 94
48
/ 94
49
/ 94
50
/ 94
51
/ 94
52
/ 94
53
/ 94
54
/ 94
55
/ 94
56
/ 94
57
/ 94
58
/ 94
59
/ 94
60
/ 94
61
/ 94
62
/ 94
63
/ 94
64
/ 94
65
/ 94
66
/ 94
67
/ 94
68
/ 94
69
/ 94
70
/ 94
71
/ 94
72
/ 94
73
/ 94
74
/ 94
75
/ 94
76
/ 94
77
/ 94
78
/ 94
79
/ 94
80
/ 94
81
/ 94
82
/ 94
83
/ 94
84
/ 94
85
/ 94
86
/ 94
87
/ 94
88
/ 94
89
/ 94
90
/ 94
91
/ 94
92
/ 94
93
/ 94
94
/ 94
More Related Content
PPTX
未来のプログラミング技術をUnityで -UniRx-
by
torisoup
PDF
Observableで非同期処理
by
torisoup
PDF
UniRx完全に理解した
by
torisoup
PPTX
UniRxことはじめ
by
Shoichi Yasui
PDF
UniTask入門
by
torisoup
PPTX
若輩エンジニアから見たUniRxを利用したゲーム開発
by
Hirohito Morinaga
PDF
Riderはいいぞ!
by
UnityTechnologiesJapan002
PPTX
UE4のためのより良いゲーム設計を理解しよう!
by
Masahiko Nakamura
未来のプログラミング技術をUnityで -UniRx-
by
torisoup
Observableで非同期処理
by
torisoup
UniRx完全に理解した
by
torisoup
UniRxことはじめ
by
Shoichi Yasui
UniTask入門
by
torisoup
若輩エンジニアから見たUniRxを利用したゲーム開発
by
Hirohito Morinaga
Riderはいいぞ!
by
UnityTechnologiesJapan002
UE4のためのより良いゲーム設計を理解しよう!
by
Masahiko Nakamura
What's hot
PDF
ObserverパターンからはじめるUniRx
by
torisoup
PDF
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
by
Unity Technologies Japan K.K.
PPTX
UnrealBuildTool勉強会まとめ
by
Shun Sasaki
PDF
UE4でマルチプレイヤーゲームを作ろう
by
エピック・ゲームズ・ジャパン Epic Games Japan
PPTX
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
by
U-dai Yokoyama
PDF
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
by
エピック・ゲームズ・ジャパン Epic Games Japan
DOCX
UE4でPerforceと連携するための手順
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
Unityでパフォーマンスの良いUIを作る為のTips
by
Unity Technologies Japan K.K.
PDF
UE4勉強会 in 大阪 - アニメーション基礎
by
com044
PDF
ヒストリア HelixCore(Perforce) 運用レギュレーションドキュメント
by
historia_Inc
PDF
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
by
com044
PPTX
UniRxでMV(R)Pパターンをやってみた
by
torisoup
PDF
【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-
by
Unity Technologies Japan K.K.
PPTX
大規模タイトルにおけるエフェクトマテリアル運用 (SQEX大阪: 林武尊様) #UE4DD
by
エピック・ゲームズ・ジャパン Epic Games Japan
PPTX
UE4のレイトレで出来ること/出来ないこと
by
Satoshi Kodaira
PDF
UE4.14.0 Forward Shadingのエンジン改造でセルシェードやってみた
by
com044
PPTX
猫でも分かるUMG
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
UE4におけるエフェクトの為のエンジン改造事例
by
エピック・ゲームズ・ジャパン Epic Games Japan
PPTX
Fortniteを支える技術
by
エピック・ゲームズ・ジャパン Epic Games Japan
PPTX
UE4アセットリダクション手法紹介
by
エピック・ゲームズ・ジャパン Epic Games Japan
ObserverパターンからはじめるUniRx
by
torisoup
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
by
Unity Technologies Japan K.K.
UnrealBuildTool勉強会まとめ
by
Shun Sasaki
UE4でマルチプレイヤーゲームを作ろう
by
エピック・ゲームズ・ジャパン Epic Games Japan
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
by
U-dai Yokoyama
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
by
エピック・ゲームズ・ジャパン Epic Games Japan
UE4でPerforceと連携するための手順
by
エピック・ゲームズ・ジャパン Epic Games Japan
Unityでパフォーマンスの良いUIを作る為のTips
by
Unity Technologies Japan K.K.
UE4勉強会 in 大阪 - アニメーション基礎
by
com044
ヒストリア HelixCore(Perforce) 運用レギュレーションドキュメント
by
historia_Inc
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
by
com044
UniRxでMV(R)Pパターンをやってみた
by
torisoup
【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-
by
Unity Technologies Japan K.K.
大規模タイトルにおけるエフェクトマテリアル運用 (SQEX大阪: 林武尊様) #UE4DD
by
エピック・ゲームズ・ジャパン Epic Games Japan
UE4のレイトレで出来ること/出来ないこと
by
Satoshi Kodaira
UE4.14.0 Forward Shadingのエンジン改造でセルシェードやってみた
by
com044
猫でも分かるUMG
by
エピック・ゲームズ・ジャパン Epic Games Japan
UE4におけるエフェクトの為のエンジン改造事例
by
エピック・ゲームズ・ジャパン Epic Games Japan
Fortniteを支える技術
by
エピック・ゲームズ・ジャパン Epic Games Japan
UE4アセットリダクション手法紹介
by
エピック・ゲームズ・ジャパン Epic Games Japan
Viewers also liked
PDF
「ずいぶんとダサいライティングを使っているのね」〜UniRxを用いた物理ベースライティング制御〜
by
Toru Nayuki
PDF
Interactive UI with UniRx
by
Yuto Iwashita
PDF
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
by
Yoshifumi Kawai
PDF
Reactive Programming by UniRx for Asynchronous & Event Processing
by
Yoshifumi Kawai
PDF
UniRx - Reactive Extensions for Unity
by
Yoshifumi Kawai
PDF
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
by
Yoshifumi Kawai
PDF
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
by
Yoshifumi Kawai
PDF
The History of Reactive Extensions
by
Yoshifumi Kawai
PDF
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
by
Yoshifumi Kawai
PDF
Reactive extensions入門v0.1
by
一希 大田
PDF
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
by
Yoshifumi Kawai
PPTX
20160130 モデリング技術を学ぼう
by
bonjin6770 Kurosawa
PDF
Reactive Extensionsで非同期処理を簡単に
by
Yoshifumi Kawai
PDF
【Unite 2017 Tokyo】Unityで出来る『見える開発』のススメ 〜スマホゲーム「ららマジ」開発事例〜
by
Unite2017Tokyo
PDF
UniRxでPUNを使いやすくする
by
torisoup
PDF
WebSocketでリアルタイム処理をする
by
龍一 田中
PPTX
【Unite 2017 Tokyo】Ultimate Bowl 2017 -Timeline機能を活用したリアルタイムデモのメイキング-
by
Unity Technologies Japan K.K.
PPTX
50分でわかるブループリントについて
by
Masahiko Nakamura
PDF
【Unity道場 2017】PlayMakerによる初めてのUnityプログラミング
by
Unity Technologies Japan K.K.
PDF
DeclarativeSql
by
Takaaki Suzuki
「ずいぶんとダサいライティングを使っているのね」〜UniRxを用いた物理ベースライティング制御〜
by
Toru Nayuki
Interactive UI with UniRx
by
Yuto Iwashita
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
by
Yoshifumi Kawai
Reactive Programming by UniRx for Asynchronous & Event Processing
by
Yoshifumi Kawai
UniRx - Reactive Extensions for Unity
by
Yoshifumi Kawai
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
by
Yoshifumi Kawai
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
by
Yoshifumi Kawai
The History of Reactive Extensions
by
Yoshifumi Kawai
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
by
Yoshifumi Kawai
Reactive extensions入門v0.1
by
一希 大田
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
by
Yoshifumi Kawai
20160130 モデリング技術を学ぼう
by
bonjin6770 Kurosawa
Reactive Extensionsで非同期処理を簡単に
by
Yoshifumi Kawai
【Unite 2017 Tokyo】Unityで出来る『見える開発』のススメ 〜スマホゲーム「ららマジ」開発事例〜
by
Unite2017Tokyo
UniRxでPUNを使いやすくする
by
torisoup
WebSocketでリアルタイム処理をする
by
龍一 田中
【Unite 2017 Tokyo】Ultimate Bowl 2017 -Timeline機能を活用したリアルタイムデモのメイキング-
by
Unity Technologies Japan K.K.
50分でわかるブループリントについて
by
Masahiko Nakamura
【Unity道場 2017】PlayMakerによる初めてのUnityプログラミング
by
Unity Technologies Japan K.K.
DeclarativeSql
by
Takaaki Suzuki
Similar to はじめてのUniRx
PPTX
今日から始めよう UniRx
by
Yu Takahashi
PDF
俺はUniRxで行く
by
Kakohiroyuki
PDF
UniRx の1歩目
by
infinite_loop
PPTX
UniRxHandsOnVol1
by
Shoji Oshima
PPTX
UniRx勉強会 reactive extensions inside(公開用)
by
wilfrem
PDF
Unityで関数型言語ぽく書く 如法会#1
by
NAKAOKU Takahiro
今日から始めよう UniRx
by
Yu Takahashi
俺はUniRxで行く
by
Kakohiroyuki
UniRx の1歩目
by
infinite_loop
UniRxHandsOnVol1
by
Shoji Oshima
UniRx勉強会 reactive extensions inside(公開用)
by
wilfrem
Unityで関数型言語ぽく書く 如法会#1
by
NAKAOKU Takahiro
More from torisoup
PDF
Doozy UI 使おうぜ! #unity_lt
by
torisoup
PDF
MagicOnion~C#でゲームサーバを開発しよう~
by
torisoup
PDF
MagicOnion入門
by
torisoup
PDF
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
by
torisoup
PDF
ARでVRアバターを表示するシステムを構築しよう
by
torisoup
PDF
インタフェース完全に理解した
by
torisoup
PDF
【Unity】 Behavior TreeでAIを作る
by
torisoup
PDF
Unityでオニオンアーキテクチャ
by
torisoup
PDF
Photon Cloud ことはじめ
by
torisoup
PDF
アバター生放送支援アプリ「アバれぽ」
by
torisoup
PDF
コールバックと戦う話
by
torisoup
PDF
UnityとNCMBでユーザ管理を実装してみた話
by
torisoup
PDF
Task vs Observable
by
torisoup
PDF
Unityでオンラインゲーム作った話
by
torisoup
PDF
Unity開発で使える設計の話+Zenjectの紹介
by
torisoup
PPTX
みくみくまうすについて&Unity で使えるコーディングノウハウ
by
torisoup
PDF
Unity講習会(初級)
by
torisoup
Doozy UI 使おうぜ! #unity_lt
by
torisoup
MagicOnion~C#でゲームサーバを開発しよう~
by
torisoup
MagicOnion入門
by
torisoup
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
by
torisoup
ARでVRアバターを表示するシステムを構築しよう
by
torisoup
インタフェース完全に理解した
by
torisoup
【Unity】 Behavior TreeでAIを作る
by
torisoup
Unityでオニオンアーキテクチャ
by
torisoup
Photon Cloud ことはじめ
by
torisoup
アバター生放送支援アプリ「アバれぽ」
by
torisoup
コールバックと戦う話
by
torisoup
UnityとNCMBでユーザ管理を実装してみた話
by
torisoup
Task vs Observable
by
torisoup
Unityでオンラインゲーム作った話
by
torisoup
Unity開発で使える設計の話+Zenjectの紹介
by
torisoup
みくみくまうすについて&Unity で使えるコーディングノウハウ
by
torisoup
Unity講習会(初級)
by
torisoup
はじめてのUniRx
1.
はじめてのUniRx 2015/06/19 UniRx勉強会 @toRisouP
2.
このプレゼンの内容
3.
UniRxをどう使っていけば 良いかの紹介が中心
4.
ターゲット層
5.
UniRx初~中級者向 (けどかなり中級者より)
6.
このスライドに出てくることは 皆さん知っている前提で話させて下さい
7.
もくじ • 自己紹介 • UniRxの使いドコロ –
Update()を消し去る – コンポーネントをストリームでつなぐ • (補足)HotとColdについて – uGUIと組み合わせて使う – コルーチンと組み合わせる • おわりに
8.
もくじ • 自己紹介 • UniRxの使いドコロ –
Update()を消し去る – コンポーネントをストリームでつなぐ • (補足)HotとColdについて – uGUIと組み合わせて使う – コルーチンと組み合わせる • おわりに
9.
自己紹介 • 名前 とりすーぷ(@toRisouP) •
本業はWeb系(最近はScalaを書いてる) • 趣味でC#/Unity開発をやってます
10.
Unityでつく(った|ってる)もの • みくみくまうす – ニコ生配信支援ツール •
みこバト~レ – 東方2次創作ゲーム • YASAI KUDAMONO – 超あほげーで作成 3つともUniRxを使ってます
11.
YASAI KUDAMONO • 超あほげー向けに18時間くらいで作ったゲーム •
UniRxを随所に使った設計になってる • ソースコードを公開しているのでUniRxの参考になれば – https://github.com/TORISOUP/YasaiKudamonoSrc
12.
もくじ • 自己紹介 • UniRxの使いドコロ –
Update()を消し去る – コンポーネントをストリームでつなぐ • (補足)HotとColdについて – uGUIと組み合わせて使う – コルーチンと組み合わせる • おわりに
13.
Updateを消し去る • Update()をObservableに変換して Awake()/Start()内にまとめて記述する
14.
Observable化していない実装 やりたいことを直列に書く必要があり流れが追いづらい
15.
Observable化した実装
16.
比較(Observable化) やりたいことを並列に書けるので読みやすい
17.
Updateを消し去るメリット • 処理ごとに横に並べて記述ができる可能 – 処理ごとのスコープが明示されるようになる –
機能追加、削除、変更が容易にできるようになる – 記述が宣言的になり処理の意図がわかりやすくなる • Rxのオペレータがロジックの実現に使用可能 – 複雑なロジックがオペレータの組み合わせで実装できる
18.
Observable化する3つの方法 • UpdateAsObservable – 指定したgameObjectに紐づくObservableが作れる –
gameObjectのDestroy時にOnCompletedが発行される • Observable.EveryUpdate – gameObjectから独立したObservableが作れる – MonoBehaviourに関係ない場所でも使える • ObserveEveryValueChanged – Observable.EveryUpdateの派生版 – 値の変動を毎フレーム監視するObservableが作れる
19.
Observable.EveryUpdateの注意点 • Destroy時にOnCompletedが発行されない – UpdateAsObservableと同じ感覚で使うと罠を踏む このgameObjectが破棄されると nullになって例外が飛ぶ
20.
寿命管理の楽な方法 • AddTo – 指定のgameObjectが破棄されたら自動Disposeしてくれる –
OnCompletedが発行されるわけではない AddToに渡したgameObjectが Destroyされると一緒にDisposeされる
21.
もくじ • 自己紹介 • UniRxの使いドコロ –
Update()を消し去る – コンポーネントをストリームでつなぐ • (補足)HotとColdについて – uGUIと組み合わせて使う – コルーチンと組み合わせる • おわりに
22.
ストリームでつなぐ • コンポーネントをストリームでつなぐことで Observerパターンな設計にしてしまう – 全体がイベント駆動になるようにしてしまう –
ちなみにRxはObserverパターンそのもの
23.
タイマを例にして解説 • タイマのカウントを画面に表示する – UniRxを使わずに実装 –
UniRxのストリームで実装
24.
タイマを使った例 • タイマのカウントを画面に表示する – UniRxを使わずに実装 –
UniRxのストリームで実装
25.
例)ポーリングの例
26.
例)ポーリングの例 毎フレーム、値が更新されたか確認する(ムダが多い)
27.
タイマを使った例 • タイマのカウントを画面に表示する – UniRxを使わずに実装 –
UniRxのストリームで実装
28.
まずタイマ側をストリーム化 ゲームの残り時間(秒数)を表すReactivePropertyを公開 このReactivePropertyをObserverがSubscribeする
29.
まずタイマ側をストリーム化 ゲームの残り時間(秒数)を表すReactivePropertyを公開 このReactivePropertyをObserverがSubscribeする CurrentTimeをReactivePropertyとして公開する (値が更新されるとOnNextでその値が通知される)
30.
タイマを使う側の実装
31.
タイマを使う側の実装 向こうから更新通知が送られてくる そのタイミングで描画を更新するだけ
32.
ストリームでつなぐメリット • Observerパターンが簡単に実装できる – 変化をポーリングする実装が消え去る –
必要なタイミングで必要な処理をするように記述すればよい • 既存のイベント通知機構より簡単 – C#のEventは下準備が面倒で使いたくない – UnityのSendMessageは使いたくなく – RxならObservableを用意すればOK!ラクチン!
33.
もくじ • 自己紹介 • UniRxの使いドコロ –
Update()を消し去る – コンポーネントをストリームでつなぐ • (補足)HotとColdについて – uGUIと組み合わせて使う – コルーチンと組み合わせる • おわりに
34.
Hot/Coldな性質 Observableは性質により2種類に別けられる • Hotな性質のもの • Coldな性質
のもの
35.
Hotな性質のObservable • Observerがいなくても稼働する • ストリームを枝分かれさせ、メッセージを分配させることができる
36.
Coldな性質のObservable • Observerがいないと動作しない • Subscribeされる度に新しく生成される(枝分かれしない)
37.
例)Cold Observableの複数回Subscribe • intervalStreamを時間をズラして3回Subscribeする –
同じストリームのはずなのにOnNextのタイミングがバラバラ – それぞれ別々のストリームが生成されてしまっているため
38.
図解 intervalStream Coldな性質のintervalStreamを複数回Subscribe
39.
図解 intervalStream intervalStream intervalStream 3つとも別のストリームが生成されてしまう (それぞれ別々のタイマを持っているため時間がバラバラになる)
40.
続き)Hot変換してみる • ObservableはHotな性質に変換できる – Hot変換オペレータを挟むことでHotにすることができる –
さっきのintervalStreamをHot変換してみる
41.
図解 intervalStream Publish Hot変換オペレータを末尾に配置してからSubscribe
42.
図解 intervalStream Publish Hot変換した部分で枝分かれする (1つのタイマを3つのObserverが共有することができた) OnNextのタイミングが全て一致
43.
Hot/Coldのまとめ • Rxのハマりやすい罠の1つ – 型から判別できないので非常にやっかい –
ストリームがHotであるかColdであるか気をつける必要がある – ストリームを外に公開するときはHot変換を挟むと安全 • ほとんどのストリームはColdである – オペレータはほぼ全てColdな性質 – Subjectを内部に持つものが唯一Hotな性質である • Subject,ReactivePropety,Hot変換用オペレータなど
44.
詳しく知りたい人は • Qiitaにまとめたのでこちらを読んでください – http://qiita.com/toRisouP/items/f6088963037bfda658d3 –
http://qiita.com/toRisouP/items/c955e36610134c05c860
45.
もくじ • 自己紹介 • UniRxの使いドコロ –
Update()を消し去る – コンポーネントをストリームでつなぐ • (補足)HotとColdについて – uGUIと組み合わせて使う – コルーチンと組み合わせる • おわりに
46.
UniRxとuGUIと組み合わせる • uGUIで使えるModel-View-○○パターン – uGUIで有用なMV○パターンが今まで存在しなかった •
MVCパターンはそもそも人によって考え方がバラバラすぎる • MVVMはデータバインディングが無いので使えない – ObservableとReactivePropertyを組み合わせると uGUI周りがスッキリ書ける
47.
Model-View-(Reactive)Presenter • MV(R)Pパターン – Model-View-Presenterパターン
+ UniRx – 3つのレイヤをObservableでシームレスにつなぐ
48.
View Presenter Model MV(R)Pの図 Presenterが ModelとViewを参照する
49.
View Presenter Model MV(R)Pの図 ReactiveProperty 内部状態の変化の通知 Subscribe Viewへ反映 xxxAsObservable ユーザ入力 Subscribe Modelに反映 Presenterが ModelとViewを参照を持つ
50.
MV(R)Pパターンの作り方 1. ModelにReactivePropertyを持たせる 2. Presenterをつくる 3.
PresenterにModelとViewを登録する 4. Presenter内で Viewの Observableと ModelのReactiveProperty をそれぞ れSubscribeしてつなぎこむ
51.
実装例)みくみくまうす • MMDモデルにニコ生のコメントを 読み上げさせるツール • UIをMV(R)Pパターンで実装してある
52.
MV(R)Pな実装例の紹介 • コメントの読み上げタイミングの調整スライダ – SliderとInputFieldが連動する –
入力された数値はConfigComponentが保持する
53.
コンポーネント間の関係図 SpeechTimingSlider Presenter SpeechTimingReactiveProperty (読み上げタイミング調整時間の実体) OnValueChangedAsObservable() スライダが変化した時にその数値を 通知するObservable SpeechTimingInputField Presenter OnEndEditAsObservable() InputFieldの入力が完了した時に その値を通知するObservable View Presenter Model ConfigComponent
54.
Modelの実装 ReactivePropertyを外に公開
55.
Presenterの実装(Slider側) Model → View View
→ Model
56.
Presenterの実装(InputField側) Model → View View
→ Model
57.
uGUIで使うまとめ • MV(R)PパターンでuGUI周りの設計が楽になる – uGUIを使う場合はおそらく現時点での最適解 –
プログラマにとってはやりやすいが、 ノンプログラマの人には触りにくく可能性に注意 • Presenterのベストな作り方はまだ模索中 – PresenterにどうやってModelとViewを登録するか – Presenterを1つにまとめるか、分割して作るか – 動的にPresenterを生成する場合はどうするか
58.
もくじ • 自己紹介 • UniRxの使いドコロ –
Update()を消し去る – コンポーネントをストリームでつなぐ • (補足)HotとColdについて – uGUIと組み合わせて使う – コルーチンと組み合わせる • おわりに
59.
コルーチンと組み合わせる • UnityのコルーチンとObservableは相互変換可能 – コルーチンと組み合わせることでRxの弱点を補うことができる
60.
コルーチン⇔Observable • コルーチン→Observable – Observable.FromCoroutine •
Observable→コルーチン – StartAsCoroutine
61.
コルーチン⇔Observable • コルーチン→Observable – Observable.FromCoroutine •
Observable→コルーチン – StartAsCoroutine
62.
コルーチン→Observableのメリット • 複雑なストリームを簡単に作成できる – ファクトリメソッドやオペレータチェーンだけでは 作れない複雑なロジックのストリームを作ることができる •
手続き的な処理を隠蔽できる – 煩雑な処理をコルーチンに隠蔽し外からはObservableとして 宣言的に扱えるようにできる
63.
例)コルーチンからObservableを作 る • プレイヤの生死に連動したタイマ – プレイヤが生きている間のみカウントダウン –
プレイヤが死亡している間はタイマを停止する – ファクトリメソッドやオペレータチェーンで作るのは難しい
64.
タイマの定義
65.
コルーチンから変換する
66.
コルーチン中でOnNext
67.
コルーチン⇔Observable • コルーチン→Observable – Observable.FromCoroutine •
Observable→コルーチン – StartAsCoroutine
68.
Observableをコルーチン化する • StartAsCoroutine – OnCompletedが発行されるまでyield
return nullし続ける – 完了時に最後のOnNext値を1つ出力する • 非同期処理を同期処理っぽく書けるようになる – Taskのawaitに近いことをUnityコルーチンで実現できる
69.
実装例 • テキストをWebからダウンロード • ボタンでテキスト送りしながら表示する
70.
実装したコルーチン
71.
テキストのダウンロードを待つ
72.
ボタンが押されるまで待つ
73.
コルーチンと組み合わせるのまとめ • UnityのコルーチンとObservableは相互変換可能 – 複雑なストリームをコルーチンを使って実装可能 –
コルーチン中でイベントの待ち受けが可能 – 非同期処理を同期処理っぽく書くことができるようになる
74.
もくじ • 自己紹介 • UniRxの使いドコロ –
Update()を消し去る – コンポーネントをストリームでつなぐ • (補足)HotとColdについて – uGUIと組み合わせて使う – コルーチンと組み合わせる • おわりに
75.
UniRxを使う上での心得 • 「全てはストリーム」という世界観を持つ – ストリーム化できる所を探してストリームにすると便利になる –
ただしやりすぎは禁物 • Rxは万能ではない知る – やりたいことが宣言的に上手く書けない場合も当然ある – そういった場合はコルーチンと組み合わせると上手くいったりする • 設計を意識する – 行き当たりばったりの設計でUniRxを使うのは非常に危険 – Observerパターンのメリット・デメリットが活かせる
76.
Qiitaにいろいろまとめました • 過去にいくつか記事を書いているので参考になれば – http://qiita.com/toRisouP/items/48b9fa25df64d3c6a392
77.
ありがとうございました @toRisouP
79.
例)Animation同期をキレイに書く • ユニティちゃんがボールを投げる – アニメーションに同期して投げる –
投げるボールのパラメータも指定できる
80.
ボールを投げるアニメーション
81.
ボールを投げるアニメーション このタイミングでボールを生成して射出する
82.
AnimationEvent • このタイミングで「BallThrowEvent」が定義し てある
83.
UniRxを使わずに書くとこうなる
84.
UniRxを使わずに書くとこうなる ここでAnimation再生開始
85.
UniRxを使わずに書くとこうなる ここにコールバック
86.
UniRxを使わずに書くとこうなる 一連の処理なのに 分断されてしまう
87.
UniRxを使わずに書くとこうなる 一時保存用の変数
88.
これをStartAsCoroutineで書くと
89.
これをStartAsCoroutineで書くと AnimationEventをObservable化
90.
これをStartAsCoroutineで書くと コルーチン
91.
これをStartAsCoroutineで書くと Animation開始
92.
これをStartAsCoroutineで書くと コールバックが来るまで yield return
93.
これをStartAsCoroutineで書くと コールバックが混ざった非同期処理を 同期処理っぽく書けた
94.
これをStartAsCoroutineで書くと 一時保存変数も消え去った
Download