🍰

Unity Reference Projectを使ってみる Mainシーン編

2023/12/28に公開

導入編で書いた通りReference Projectは大規模データを扱う際のパイプラインだったり描画の最適化を解消してくるという事なので、建物のデータを扱ってみます。
sample_architecture.rvt 62.82 MB 基本、平面で構成されているのでTrisもそこまでではないです。
これをUnity 2022 URPの新規シーンに取り込んでStaticで表示をすると113 FPS、Tris:2.2M Verts:2.7M。

同じモデルをReference Projectで開くと 175 FPS くらいでてますので、実際はやいです。

まずはUnity Asset Managerにこちらのサンプルデータをアップロードしました。

※この様に試せるデータを公開頂けてると検討がしやすいので感謝してます!

さっそくUnity Reference ProjectのMainをPlay Modeにしてこのデータを表示してみます。
ログインを済ますとProjectと表示する3Dモデルの選択画面が表示されるので、データを選んでOpenボタンを押すとストリーミングされます。

ちなみに右上ギアメニューから言語が英語とフランス語に切り替えられました。

Mainシーンは6つのPrefabで構成されています。
※操作や変更した結果をみて、以下の内容は更新する予定。

[ Build Version ]

Display Build Versionコンポーネントで画面に表示するバージョンをProject設定から取得。

[ Deep Linking ]

Deep Linking Consumerコンポーネントで画面遷移をコントロール。
ディープリンクは他の人にViewに参加してもらうためにリンクを送る、みたいなことで使われるのだと想像しますが詳細はまだわからず。
Presentation Modeで使われていると推測。

[ Scene Context ]

シーン起動のために必要なコンテキスト情報を持たせる(Dependency Injection)
シーンの構成部品のひとつのApp State Machine Prefabへの参照を持つ
Asset List InstallerはZenjectのMonoInstallerを継承し、DIコンテナを設定する
Unity CloudにもDIに関する資料があある

[ App State Machine ]

状態/画面の遷移を定義(デフォルトではInitialではじまり、Streamingに)
Initial
=> Wait Locales Loading
=> Wait Authentication
=> Login
=> Validate App Info
=> Asset List
=> Scene Streaming
=> Streaming(Sceneのロード)
App State Machine Prefabには上記(最後のStreaming除く)をChild Objectとして持っており、各Child Objectは自身のStateとApp State UI Togglerをコンポーネントとして持つ。
例)Wait Locales Loadingの場合は

  1. 「Wait Locales Loading State」と
  2. 「App State UI Toggler」を持つ。
[ UI ]

Reference Projectが使うUIが揃っており、例えばAssetListはUIのChild Objectsの以下を使っている

  1. Background
  2. TopMenu(Background)
  3. TopMenu(Common)
  4. AssetList
[ Settings ]

Localization、Stats Display、Theme(dark,light)を持っている。
つまりはこの部分を保持する。

内容をみたり、変更してみたいのは以下の2点。

  1. Streaming :複数のAssetをシーンにStreamingしたい
  2. Localization :日本語を追加したい

各内容については別の記事に書く。

Discussion