Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Unidux を用いたマルチシーン構成の画面遷移 / xrdnk-unity-otonanolt-2021

Denik
December 12, 2021

Unidux を用いたマルチシーン構成の画面遷移 / xrdnk-unity-otonanolt-2021

以下のイベントでLT登壇した際に利用した発表資料です.

【年末だよ】Unity お・と・なのLT大会 2021
https://meetup.unity3d.jp/jp/events/1337

Denik

December 12, 2021
Tweet

More Decks by Denik

Other Decks in Programming

Transcript

  1. 本発表のレベル感 ◼ UniRx を理解している ◼ DiContainer (ここでは Zenject) を理解している ◼

    Passive View Pattern (ここでは MVRP) を理解している 上記を満足していることを前提に進めるので 上記に関する説明は基本的にしません.
  2. Unidux Unidux の Scene Transition を利用して マルチシーン × 画面遷移制御をいい感じに作ってみたという話 Unidux

    ≒ Flux Architecture for Unity Flux は Meta (旧 Facebook) が開発したアーキテクチャ React の Redux を知っているとピンとくるかもしれません https://github.com/mattak/Unidux
  3. Store Unidux Data-Flow Input Dispatcher State ↓ State’ Reducer Reduce

    Unidux Service Watcher Update ActionCreator View Action Action
  4. Unidux 登場人物 ◼ Page ◼ PageData ◼ Action Creator ◼

    Dispatcher ◼ Store ◼ Reducer ◼ State ◼ Watcher
  5. Unidux では1画面のことを「Page」と表現します Page は1個以上の Scene ファイルを持ちます Page Main Page (メイン画面)

    UI Scene UIシーン Logic Scene ゲームロジックシーン Level Scene レベルデザインシーン Title Page (タイトル画面) UI Scene UIシーン Logic Scene ゲームロジックシーン Result Page (リザルト画面) UI Scene UIシーン Logic Scene ゲームロジックシーン
  6. Scene Category Unidux では Unity の Scene ファイル に対して 3種類の

    Scene Category で分類されています ◼ Permanent 永続的に存在する Scene. どのシーンにも共通として使われるシステム部分など ◼ Page 加減算処理される Scene. 画面として使われる Scene. ◼ Modal Page とほぼ同じ.モーダルとして使われる Scene. (分類分けされているが実際ほとんど使ってないので説明割愛)
  7. マルチシーン構成例 Entry Point Scene Unidux Service Scene Domain Layer Scenes

    永続的に残るシーン群 (主にゲームシステムや ドメインロジックの塊のシーン) 右図は例です Page Scenes 画面としてのシーン群 (加減算処理が行われる) Entry Point Scene Permanent Domain Scenes の 順番やプロジェクト全体設定を行う Unidux Service Scene で Page Scenes の順番・設定 Title Page Logic Page Scene UI Page Scene Main Game Page Logic Page Scene UI Page Scene Result Page Logic Page Scene UI Page Scene Level Page Scene DontDestroyOnLoad Scene VoiceChat Service Scene Multiplayer Service Scene Resource Service Scene
  8. Action Creator ステートを変更させる Action を作る役 Store Dispatcher State ↓ State’

    Reducer Reduce Unidux Service Watcher Update ActionCreator Action Action
  9. Actions Unidux では 以下の Action が デフォルトで提供されている ◼ Push 新しい画面に遷移する

    ◼ Pop 前の画面に遷移する ◼ Replace 今の画面を別の画面に置換して遷移する ◼ Reset これまでのスタック履歴をクリアする ◼ SetData ページデータの更新をする ◼ Adjust 現状のステートを調整する
  10. Dispatcher Action Creator から受け取った Action を Reducer に渡す役 MVP や

    MVC では Presenter / Controller の役割に近い Store Dispatcher State ↓ State’ Reducer Reduce Unidux Service Watcher Update ActionCreator Action Action
  11. Store State と Reducer を格納.状態管理とデータ処理を担っている MVP や MVC では Model

    の役割に近い Store Dispatcher State ↓ State’ Reducer Reduce Unidux Service Watcher Update ActionCreator Action Action
  12. Reducer Dispatcher から届いた Action を受け取り ステートを更新する役 Store Dispatcher State ↓

    State’ Reducer Reduce Unidux Service Watcher Update ActionCreator Action Action
  13. シーンの読込順番と Scene Context 親子関係例 Entry Point Scene Unidux Service Scene

    Domain Layer Scenes Page Scenes Title Page Logic Page Scene UI Page Scene Main Game Page Logic Page Scene UI Page Scene Result Page Logic Page Scene UI Page Scene Level Page Scene VoiceChat Service Scene Multiplayer Service Scene Resource Service Scene Parent Child
  14. 単一シーンの画面遷移|Unity Screen Navigator Haruma-K さんの Unity Screen Navigator を推します こちらはビューのプレハブをページとしています

    Unity Screen Navigator で単一シーン画面遷移を試してみた - デニッキ! https://xrdnk.hateblo.jp/entry/2021/11/28/185547
  15. Unidux × Unity Screen Navigator (USN) の親和性 Unidux を「シーンファイル」をスコープとした遷移制御とするならば USN

    は「プレハブファイル」をスコープとした遷移制御 → UI Page Scene 内でのビューナビゲーションに活用できる Main Game Page Logic Page Scene UI Page Scene Level Page Scene Main Game View Prefab Settings View Prefab Modal View Prefab Sheet View Prefab Unidux でマルチシーン遷移制御 USN でプレハブ遷移制御