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
Submit search
EN
Uploaded by
torisoup
PPTX, PDF
91,166 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
PPTX
若輩エンジニアから見たUniRxを利用したゲーム開発
by
Hirohito Morinaga
PDF
UniRx完全に理解した
by
torisoup
PDF
UniTask入門
by
torisoup
PDF
Unityでパフォーマンスの良いUIを作る為のTips
by
Unity Technologies Japan K.K.
PDF
60fpsアクションを実現する秘訣を伝授 基礎編
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
インタフェース完全に理解した
by
torisoup
PDF
猫でも分かるUE4のポストプロセスを使った演出・絵作り
by
エピック・ゲームズ・ジャパン Epic Games Japan
未来のプログラミング技術をUnityで -UniRx-
by
torisoup
若輩エンジニアから見たUniRxを利用したゲーム開発
by
Hirohito Morinaga
UniRx完全に理解した
by
torisoup
UniTask入門
by
torisoup
Unityでパフォーマンスの良いUIを作る為のTips
by
Unity Technologies Japan K.K.
60fpsアクションを実現する秘訣を伝授 基礎編
by
エピック・ゲームズ・ジャパン Epic Games Japan
インタフェース完全に理解した
by
torisoup
猫でも分かるUE4のポストプロセスを使った演出・絵作り
by
エピック・ゲームズ・ジャパン Epic Games Japan
What's hot
PPTX
UniRxでMV(R)Pパターンをやってみた
by
torisoup
PDF
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
by
Unity Technologies Japan K.K.
PDF
UE4モバイルブートキャンプ
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
UE4におけるレベル制作事例
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
by
historia_Inc
PDF
『FINAL FANTASY VII REMAKE』におけるプロファイリングと最適化事例 UNREAL FEST EXTREME 2021 SUMMER
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
60fpsアクションを実現する秘訣を伝授 解析編
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
UE4における大規模背景制作事例 最適化ワークフロー編
by
エピック・ゲームズ・ジャパン Epic Games Japan
PPTX
脱! 俺たちは雰囲気でBPをいじっている
by
Naoaki Yamaji
PDF
Riderはいいぞ!
by
UnityTechnologiesJapan002
PDF
MagicOnion入門
by
torisoup
PDF
はじめてアンリアルエンジンで海戦をつくってみたときのお話
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
UE4 Performance and Profiling | Unreal Dev Day Montreal 2017 (日本語訳)
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
コールバックと戦う話
by
torisoup
PDF
UE4 アセットロード周り-アセット参照調査-
by
com044
PPTX
UE4 MultiPlayer Online Deep Dive 基礎編2 -Traveling- (historia様ご講演) #ue4dd
by
エピック・ゲームズ・ジャパン Epic Games Japan
UniRxでMV(R)Pパターンをやってみた
by
torisoup
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
by
エピック・ゲームズ・ジャパン Epic Games Japan
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
by
Unity Technologies Japan K.K.
UE4モバイルブートキャンプ
by
エピック・ゲームズ・ジャパン Epic Games Japan
UE4におけるレベル制作事例
by
エピック・ゲームズ・ジャパン Epic Games Japan
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
by
エピック・ゲームズ・ジャパン Epic Games Japan
アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~
by
エピック・ゲームズ・ジャパン Epic Games Japan
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
by
historia_Inc
『FINAL FANTASY VII REMAKE』におけるプロファイリングと最適化事例 UNREAL FEST EXTREME 2021 SUMMER
by
エピック・ゲームズ・ジャパン Epic Games Japan
60fpsアクションを実現する秘訣を伝授 解析編
by
エピック・ゲームズ・ジャパン Epic Games Japan
UE4における大規模背景制作事例 最適化ワークフロー編
by
エピック・ゲームズ・ジャパン Epic Games Japan
脱! 俺たちは雰囲気でBPをいじっている
by
Naoaki Yamaji
Riderはいいぞ!
by
UnityTechnologiesJapan002
MagicOnion入門
by
torisoup
はじめてアンリアルエンジンで海戦をつくってみたときのお話
by
エピック・ゲームズ・ジャパン Epic Games Japan
UE4 Performance and Profiling | Unreal Dev Day Montreal 2017 (日本語訳)
by
エピック・ゲームズ・ジャパン Epic Games Japan
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
by
エピック・ゲームズ・ジャパン Epic Games Japan
コールバックと戦う話
by
torisoup
UE4 アセットロード周り-アセット参照調査-
by
com044
UE4 MultiPlayer Online Deep Dive 基礎編2 -Traveling- (historia様ご講演) #ue4dd
by
エピック・ゲームズ・ジャパン Epic Games Japan
Viewers also liked
PDF
Reactive extensions入門v0.1
by
一希 大田
PDF
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
by
Yoshifumi Kawai
PPTX
50分でわかるブループリントについて
by
Masahiko Nakamura
PDF
Reactive Programming by UniRx for Asynchronous & Event Processing
by
Yoshifumi Kawai
PDF
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
by
Yoshifumi Kawai
PDF
【Unity道場 2017】PlayMakerによる初めてのUnityプログラミング
by
Unity Technologies Japan K.K.
PDF
Reactive Extensionsで非同期処理を簡単に
by
Yoshifumi Kawai
PDF
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
by
Yoshifumi Kawai
PDF
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
by
Yoshifumi Kawai
PDF
WebSocketでリアルタイム処理をする
by
龍一 田中
PDF
UniRxでPUNを使いやすくする
by
torisoup
PDF
Interactive UI with UniRx
by
Yuto Iwashita
PDF
「ずいぶんとダサいライティングを使っているのね」〜UniRxを用いた物理ベースライティング制御〜
by
Toru Nayuki
PDF
UniRx - Reactive Extensions for Unity
by
Yoshifumi Kawai
PDF
The History of Reactive Extensions
by
Yoshifumi Kawai
PDF
【Unite 2017 Tokyo】Unityで出来る『見える開発』のススメ 〜スマホゲーム「ららマジ」開発事例〜
by
Unite2017Tokyo
PPTX
【Unite 2017 Tokyo】Ultimate Bowl 2017 -Timeline機能を活用したリアルタイムデモのメイキング-
by
Unity Technologies Japan K.K.
PDF
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
by
Yoshifumi Kawai
PPTX
20160130 モデリング技術を学ぼう
by
bonjin6770 Kurosawa
PDF
DeclarativeSql
by
Takaaki Suzuki
Reactive extensions入門v0.1
by
一希 大田
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
by
Yoshifumi Kawai
50分でわかるブループリントについて
by
Masahiko Nakamura
Reactive Programming by UniRx for Asynchronous & Event Processing
by
Yoshifumi Kawai
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
by
Yoshifumi Kawai
【Unity道場 2017】PlayMakerによる初めてのUnityプログラミング
by
Unity Technologies Japan K.K.
Reactive Extensionsで非同期処理を簡単に
by
Yoshifumi Kawai
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
by
Yoshifumi Kawai
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
by
Yoshifumi Kawai
WebSocketでリアルタイム処理をする
by
龍一 田中
UniRxでPUNを使いやすくする
by
torisoup
Interactive UI with UniRx
by
Yuto Iwashita
「ずいぶんとダサいライティングを使っているのね」〜UniRxを用いた物理ベースライティング制御〜
by
Toru Nayuki
UniRx - Reactive Extensions for Unity
by
Yoshifumi Kawai
The History of Reactive Extensions
by
Yoshifumi Kawai
【Unite 2017 Tokyo】Unityで出来る『見える開発』のススメ 〜スマホゲーム「ららマジ」開発事例〜
by
Unite2017Tokyo
【Unite 2017 Tokyo】Ultimate Bowl 2017 -Timeline機能を活用したリアルタイムデモのメイキング-
by
Unity Technologies Japan K.K.
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
by
Yoshifumi Kawai
20160130 モデリング技術を学ぼう
by
bonjin6770 Kurosawa
DeclarativeSql
by
Takaaki Suzuki
Similar to はじめてのUniRx
PDF
UniRx の1歩目
by
infinite_loop
PDF
俺はUniRxで行く
by
Kakohiroyuki
PPTX
今日から始めよう UniRx
by
Yu Takahashi
PDF
Unityで関数型言語ぽく書く 如法会#1
by
NAKAOKU Takahiro
PPTX
UniRx勉強会 reactive extensions inside(公開用)
by
wilfrem
PPTX
UniRxHandsOnVol1
by
Shoji Oshima
UniRx の1歩目
by
infinite_loop
俺はUniRxで行く
by
Kakohiroyuki
今日から始めよう UniRx
by
Yu Takahashi
Unityで関数型言語ぽく書く 如法会#1
by
NAKAOKU Takahiro
UniRx勉強会 reactive extensions inside(公開用)
by
wilfrem
UniRxHandsOnVol1
by
Shoji Oshima
More from torisoup
PDF
Observableで非同期処理
by
torisoup
PDF
Unity開発で使える設計の話+Zenjectの紹介
by
torisoup
PDF
【Unity】 Behavior TreeでAIを作る
by
torisoup
PDF
ARでVRアバターを表示するシステムを構築しよう
by
torisoup
PDF
Unityでオニオンアーキテクチャ
by
torisoup
PDF
Unityでオンラインゲーム作った話
by
torisoup
PDF
MagicOnion~C#でゲームサーバを開発しよう~
by
torisoup
PDF
Doozy UI 使おうぜ! #unity_lt
by
torisoup
PDF
ObserverパターンからはじめるUniRx
by
torisoup
PDF
UnityとNCMBでユーザ管理を実装してみた話
by
torisoup
PDF
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
by
torisoup
PDF
アバター生放送支援アプリ「アバれぽ」
by
torisoup
PPTX
みくみくまうすについて&Unity で使えるコーディングノウハウ
by
torisoup
PDF
Photon Cloud ことはじめ
by
torisoup
PDF
Unity講習会(初級)
by
torisoup
PDF
Task vs Observable
by
torisoup
Observableで非同期処理
by
torisoup
Unity開発で使える設計の話+Zenjectの紹介
by
torisoup
【Unity】 Behavior TreeでAIを作る
by
torisoup
ARでVRアバターを表示するシステムを構築しよう
by
torisoup
Unityでオニオンアーキテクチャ
by
torisoup
Unityでオンラインゲーム作った話
by
torisoup
MagicOnion~C#でゲームサーバを開発しよう~
by
torisoup
Doozy UI 使おうぜ! #unity_lt
by
torisoup
ObserverパターンからはじめるUniRx
by
torisoup
UnityとNCMBでユーザ管理を実装してみた話
by
torisoup
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
by
torisoup
アバター生放送支援アプリ「アバれぽ」
by
torisoup
みくみくまうすについて&Unity で使えるコーディングノウハウ
by
torisoup
Photon Cloud ことはじめ
by
torisoup
Unity講習会(初級)
by
torisoup
Task vs Observable
by
torisoup
Recently uploaded
PDF
第25回FA設備技術勉強会_自宅で勉強するROS・フィジカルAIアイテム.pdf
by
TomohiroKusu
PDF
visionOS TC「新しいマイホームで過ごすApple Vision Proとの新生活」
by
Sugiyama Yugo
PPTX
DrupalCon Nara 2025の記録 .
by
iPride Co., Ltd.
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):東京大学情報基盤センター テーマ1/2/3「Society5.0の実現を目指す『計算・データ・学習...
by
PC Cluster Consortium
PDF
基礎から学ぶ PostgreSQL の性能監視 (PostgreSQL Conference Japan 2025 発表資料)
by
NTT DATA Technology & Innovation
PDF
安価な ロジック・アナライザを アナライズ(?),Analyze report of some cheap logic analyzers
by
たけおか しょうぞう
第25回FA設備技術勉強会_自宅で勉強するROS・フィジカルAIアイテム.pdf
by
TomohiroKusu
visionOS TC「新しいマイホームで過ごすApple Vision Proとの新生活」
by
Sugiyama Yugo
DrupalCon Nara 2025の記録 .
by
iPride Co., Ltd.
PCCC25(設立25年記念PCクラスタシンポジウム):東京大学情報基盤センター テーマ1/2/3「Society5.0の実現を目指す『計算・データ・学習...
by
PC Cluster Consortium
基礎から学ぶ PostgreSQL の性能監視 (PostgreSQL Conference Japan 2025 発表資料)
by
NTT DATA Technology & Innovation
安価な ロジック・アナライザを アナライズ(?),Analyze report of some cheap logic analyzers
by
たけおか しょうぞう
はじめての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