Submit Search
Upload
UniRxでMV(R)Pパターンをやってみた
•
Download as PPTX, PDF
•
24 likes
•
29,002 views
torisoup
Follow
Model-View-(Reactive)Presenterパターンをやってみた話
Read less
Read more
Technology
Report
Share
Report
Share
1 of 21
Download now
Recommended
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
Unity Technologies Japan K.K.
UniTask入門
UniTask入門
torisoup
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
U-dai Yokoyama
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
torisoup
インタフェース完全に理解した
インタフェース完全に理解した
torisoup
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
historia_Inc
UE4でマルチプレイヤーゲームを作ろう
UE4でマルチプレイヤーゲームを作ろう
エピック・ゲームズ・ジャパン Epic Games Japan
UniRx完全に理解した
UniRx完全に理解した
torisoup
Recommended
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
Unity Technologies Japan K.K.
UniTask入門
UniTask入門
torisoup
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
U-dai Yokoyama
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
torisoup
インタフェース完全に理解した
インタフェース完全に理解した
torisoup
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
historia_Inc
UE4でマルチプレイヤーゲームを作ろう
UE4でマルチプレイヤーゲームを作ろう
エピック・ゲームズ・ジャパン Epic Games Japan
UniRx完全に理解した
UniRx完全に理解した
torisoup
UnityでUI開発を高速化した件
UnityでUI開発を高速化した件
Grenge, Inc.
【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術
【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術
Unity Technologies Japan K.K.
UE4の色について v1.1
UE4の色について v1.1
エピック・ゲームズ・ジャパン Epic Games Japan
UE4 Saitama 初心者向けハンズオン #5 『アニメーションモンタージュ(Slotアニメーション)でコンボを作る』
UE4 Saitama 初心者向けハンズオン #5 『アニメーションモンタージュ(Slotアニメーション)でコンボを作る』
Yuuki Ogino
Riderはいいぞ!
Riderはいいぞ!
UnityTechnologiesJapan002
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
DeNA
Editor Utility Widgetで色々便利にしてみた。
Editor Utility Widgetで色々便利にしてみた。
IndieusGames
Fortniteを支える技術
Fortniteを支える技術
エピック・ゲームズ・ジャパン Epic Games Japan
Doozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_lt
torisoup
若輩エンジニアから見たUniRxを利用したゲーム開発
若輩エンジニアから見たUniRxを利用したゲーム開発
Hirohito Morinaga
ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx
torisoup
Observableで非同期処理
Observableで非同期処理
torisoup
猫でも分かるUMG
猫でも分かるUMG
エピック・ゲームズ・ジャパン Epic Games Japan
60fpsアクションを実現する秘訣を伝授 基礎編
60fpsアクションを実現する秘訣を伝授 基礎編
エピック・ゲームズ・ジャパン Epic Games Japan
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話
torisoup
[UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい!
com044
豚×京都 ~UE4でなろう破壊神~ (UE4 VFX Art Dive)
豚×京都 ~UE4でなろう破壊神~ (UE4 VFX Art Dive)
エピック・ゲームズ・ジャパン Epic Games Japan
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
Unity Technologies Japan K.K.
UE4 MultiPlayer Online Deep Dive: 実践編1 (Byking様ご講演) #UE4DD
UE4 MultiPlayer Online Deep Dive: 実践編1 (Byking様ご講演) #UE4DD
エピック・ゲームズ・ジャパン Epic Games Japan
猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について
エピック・ゲームズ・ジャパン Epic Games Japan
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
MagicOnion入門
MagicOnion入門
torisoup
More Related Content
What's hot
UnityでUI開発を高速化した件
UnityでUI開発を高速化した件
Grenge, Inc.
【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術
【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術
Unity Technologies Japan K.K.
UE4の色について v1.1
UE4の色について v1.1
エピック・ゲームズ・ジャパン Epic Games Japan
UE4 Saitama 初心者向けハンズオン #5 『アニメーションモンタージュ(Slotアニメーション)でコンボを作る』
UE4 Saitama 初心者向けハンズオン #5 『アニメーションモンタージュ(Slotアニメーション)でコンボを作る』
Yuuki Ogino
Riderはいいぞ!
Riderはいいぞ!
UnityTechnologiesJapan002
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
DeNA
Editor Utility Widgetで色々便利にしてみた。
Editor Utility Widgetで色々便利にしてみた。
IndieusGames
Fortniteを支える技術
Fortniteを支える技術
エピック・ゲームズ・ジャパン Epic Games Japan
Doozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_lt
torisoup
若輩エンジニアから見たUniRxを利用したゲーム開発
若輩エンジニアから見たUniRxを利用したゲーム開発
Hirohito Morinaga
ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx
torisoup
Observableで非同期処理
Observableで非同期処理
torisoup
猫でも分かるUMG
猫でも分かるUMG
エピック・ゲームズ・ジャパン Epic Games Japan
60fpsアクションを実現する秘訣を伝授 基礎編
60fpsアクションを実現する秘訣を伝授 基礎編
エピック・ゲームズ・ジャパン Epic Games Japan
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話
torisoup
[UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい!
com044
豚×京都 ~UE4でなろう破壊神~ (UE4 VFX Art Dive)
豚×京都 ~UE4でなろう破壊神~ (UE4 VFX Art Dive)
エピック・ゲームズ・ジャパン Epic Games Japan
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
Unity Technologies Japan K.K.
UE4 MultiPlayer Online Deep Dive: 実践編1 (Byking様ご講演) #UE4DD
UE4 MultiPlayer Online Deep Dive: 実践編1 (Byking様ご講演) #UE4DD
エピック・ゲームズ・ジャパン Epic Games Japan
猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について
エピック・ゲームズ・ジャパン Epic Games Japan
What's hot
(20)
UnityでUI開発を高速化した件
UnityでUI開発を高速化した件
【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術
【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術
UE4の色について v1.1
UE4の色について v1.1
UE4 Saitama 初心者向けハンズオン #5 『アニメーションモンタージュ(Slotアニメーション)でコンボを作る』
UE4 Saitama 初心者向けハンズオン #5 『アニメーションモンタージュ(Slotアニメーション)でコンボを作る』
Riderはいいぞ!
Riderはいいぞ!
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Editor Utility Widgetで色々便利にしてみた。
Editor Utility Widgetで色々便利にしてみた。
Fortniteを支える技術
Fortniteを支える技術
Doozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_lt
若輩エンジニアから見たUniRxを利用したゲーム開発
若輩エンジニアから見たUniRxを利用したゲーム開発
ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx
Observableで非同期処理
Observableで非同期処理
猫でも分かるUMG
猫でも分かるUMG
60fpsアクションを実現する秘訣を伝授 基礎編
60fpsアクションを実現する秘訣を伝授 基礎編
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話
[UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい!
豚×京都 ~UE4でなろう破壊神~ (UE4 VFX Art Dive)
豚×京都 ~UE4でなろう破壊神~ (UE4 VFX Art Dive)
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
UE4 MultiPlayer Online Deep Dive: 実践編1 (Byking様ご講演) #UE4DD
UE4 MultiPlayer Online Deep Dive: 実践編1 (Byking様ご講演) #UE4DD
猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について
More from torisoup
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
MagicOnion入門
MagicOnion入門
torisoup
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
torisoup
ARでVRアバターを表示するシステムを構築しよう
ARでVRアバターを表示するシステムを構築しよう
torisoup
【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
torisoup
Unityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャ
torisoup
Photon Cloud ことはじめ
Photon Cloud ことはじめ
torisoup
アバター生放送支援アプリ「アバれぽ」
アバター生放送支援アプリ「アバれぽ」
torisoup
コールバックと戦う話
コールバックと戦う話
torisoup
UnityとNCMBでユーザ管理を実装してみた話
UnityとNCMBでユーザ管理を実装してみた話
torisoup
Task vs Observable
Task vs Observable
torisoup
UniRxでPUNを使いやすくする
UniRxでPUNを使いやすくする
torisoup
はじめてのUniRx
はじめてのUniRx
torisoup
未来のプログラミング技術をUnityで -UniRx-
未来のプログラミング技術をUnityで -UniRx-
torisoup
みくみくまうすについて&Unity で使えるコーディングノウハウ
みくみくまうすについて&Unity で使えるコーディングノウハウ
torisoup
Unity講習会(初級)
Unity講習会(初級)
torisoup
More from torisoup
(16)
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion入門
MagicOnion入門
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
ARでVRアバターを表示するシステムを構築しよう
ARでVRアバターを表示するシステムを構築しよう
【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
Unityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャ
Photon Cloud ことはじめ
Photon Cloud ことはじめ
アバター生放送支援アプリ「アバれぽ」
アバター生放送支援アプリ「アバれぽ」
コールバックと戦う話
コールバックと戦う話
UnityとNCMBでユーザ管理を実装してみた話
UnityとNCMBでユーザ管理を実装してみた話
Task vs Observable
Task vs Observable
UniRxでPUNを使いやすくする
UniRxでPUNを使いやすくする
はじめてのUniRx
はじめてのUniRx
未来のプログラミング技術をUnityで -UniRx-
未来のプログラミング技術をUnityで -UniRx-
みくみくまうすについて&Unity で使えるコーディングノウハウ
みくみくまうすについて&Unity で使えるコーディングノウハウ
Unity講習会(初級)
Unity講習会(初級)
Recently uploaded
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
Recently uploaded
(9)
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
UniRxでMV(R)Pパターンをやってみた
1.
UniRxでMV(R)Pパターン をやってみた @toRisouP 2015/04/16
2.
自己紹介 • とりすーぷ(@toRisouP) • 趣味でUnityいじってます
3.
みくみくまうす • ニコ生の配信支援ツール • MMDモデルがニコ生のコメントを読み上げる •
フリーソフトとして公開中 • Unity5製(内部でUniRx使ってる) http://mikumikumouth.net/
4.
uGUI Unity GUI
5.
みくみくまうす
6.
uGUIに適したM-V-○パターン
7.
Model View (Reactive)
Presenter
8.
MV(R)Pパターン • UniRxを使ったuGUIのデザインパターン • ModelとViewを「Presenter」がつなぐ •
データのやり取りにObservableとReactivePropertyを使う • View/Modelの変更をReactiveに反映できる
9.
Model-View-(Reactive)Presenterパターン View (uGUIコンポーネント等)) Presenter Model ModelはPresenterに依存しない ViewはPresenterに依存しない PresenterがModelとViewを参照する
10.
Model-View-(Reactive)Presenterパターン View (uGUIコンポーネント等)) Presenter Model ReactiveProperty 内部状態の変化の通知 Subscribe Viewへ反映 xxxAsObservable ユーザ入力 Subscribe Modelに反映
11.
みくみくまうす MV(R)Pパターンで実装してある
12.
MV(R)P実装例 • 読み上げタイミング調整スライダ • Slider
または InputField を調整すると値をModelに反映 • 片方のViewを変動させるともう一方のViewに反映 • InputFieldの値域は-1500~1500 • ただしSliderの値は10刻み(-150~150)
13.
Model (ConfigComponent) 関係図 SpeechTimingSlider Presenter SpeechTimingReactiveProperty OnValueChangedAsObservable() SpeechTimingInputField Presenter OnEndEditAsObservable()
14.
SpeechTimingSliderPresenter
15.
SpeechTimingInputFieldPresenter
16.
MV(R)Pで実装してみた感想 • シンプルにキレイにまとまる • ModelとViewの独立性が保たれるのがイイ! •
Viewの変換ロジックにRxのオペレータがそのまま使える • Presenterの作り方は考える必要がありそう – SceneあたりPresenterは1つにして集中管理する? – 1つのUI要素あたり1つPresenterを作る?
17.
まとめ • UnityでRxが使えるの本当にスバラシイ – uGUI周りがキレイに書けてとても助かる –
ゲームロジックとも結構相性が良い – もっと流行らせたい • MV(R)Pは現時点ではuGUIにおける最適解かも – Rxの難しい部分が出てこないのでRx初心者でも使えるはず @toRisouP
18.
19.
PresenterをView要素毎に作るパターン View Presenter Model View Presenter View Presenter View Presenter ○ GetComponentでPresenterがViewを取得できる(スクリプト内で完結する) ○ 1Presenter当たりのコード量が少なくなって読みやすくなる ×
View要素の数だけPresenterが必要になる
20.
みくみくまうすのPresenterの数 • 1UI要素あたり1Presenterで作ったら大変なことになった
21.
Presenterを1つにまとめるパターン View Presenter Model View View View ○
1つのPresenterで管理するのでどこで処理しているか把握しやすい ○ View要素の数の変更に対応しやすい × ViewとPresenterの紐付けがInspector Viewからになる
Download now