FusionStats
概要
Fusion Statsは、ネットワークテレメトリを監視するためのUIコンポーネント群から構成されています。FusionStats
コンポーネントは、テレメトリUIエレメントの階層を生成、初期化、制御するための主要コンポーネントです。
Fusion Statsは、基本的なUnityEngine.UI
コンポーネントを使用しており、ビルド時にスクリーンオーバーレイとして、あるいは3D空間のオブジェクトに貼り付けて統計情報を表示することができます。
基本的な使い方
FusionStatsをシーンに追加するには
- Unity Editorメニューで
Fusion > GameObject > Add Fusion Stats
の順に実行する
または - Hierarchyで右クリックするか、Hierarchy内の
GameObject
で右クリックして、Fusion > Add Fusion Stats
の順に選択する
- GameObjectが選択されている場合:
FusionStats
はデフォルトのStatsCanvasType.GameObject
となり、統計はオブジェクトにアタッチされている3D空間でレンダリングされます。 - GameObjectが選択されていない場合:
FusionStats
はデフォルトのStatsCanvasType.Overlay
となり、統計はオブジェクトに画面空間でレンダリングされます。
このメニューオプションでは、FusionStatsBillboard
コンポーネントも自動的にオブジェクトに追加されます。FusionStatsBillboard
コンポーネントは、 FusionStats.CanvasType
が GameObject
に設定されている場合、GameObject
をカメラに向かって自動的に回転させます。
ランタイムの機能
シミュレーションの実行中に、利用できる追加機能がいくつかあります。このセクションでは、実行中FusionGraph
で利用できる様々な「シークレット」機能を紹介します。
表示オプション
FusionGraph
のタイトルをクリックすると、そのグラフに対する表示オプションのドロップリストが表示されます(使用可能なものが複数ある場合)
平均化オプション
実行時に FusionGraph
の値フィールドをクリックすると、現在のデータソースで利用可能な平均化オプションを順に表示することができます。
- Average per Second(秒ごとの平均);
- Average per Tick(ティックごとの平均);
- Average per Sample(サンプルごとの平均)
Ping送信
統計パネルの一番上にある NetworkRunner
の名前をクリックすると、Hierarchyにある FusionStats
コンポーネントにpingが送信されます。現在 GameObject
が選択されていない場合、このアクションはインスペクタの FusionStats
コンポーネントも選択することになります。
FusionStats コンポーネント
FusionStats
が全てのFusion Statsの主なルートコンポーネントです。子キャンバスとUIコンポーネントを生成し、実行時にこれらのテレメトリコンポーネントをNetworkRunner
やNetworkObject
のデータソースへの接続を管理します。
Redraw Interval(リドローインターバル)
UI の更新がこの値あたり 1 回を超えないように制限します。この値が大きくなると、パフォーマンスが向上します。
Layout Section(セクションのレイアウト)
レイアウトを管理します。全体的にFusionStatsキャンバスのレイアウトに影響します。
Canvas Types(キャンバスタイプ)
キャンバスモードには2通りあります。
GameObject
:3D空間でキャンバスをレンダリングします。Overlay
:画面空間でキャンバスをレンダリングします。
GameObject Rect / Overlay Rect
この2つのRectは編集可能で、UI.Canvas
上のどこに統計要素をレンダリングするかを定義し、グラフをキャンバスの特定の側面やコーナーにレンダリングすることができます。
CanvasType
が GameObject
に設定されている場合、 GameObjectRect
が使用され、統計情報をオブジェクトの中心からオフセットさせることができます。
CanvasType
が Overlay
に設定されている場合、OverlayRect
が使用され、画面上のどこに統計情報をレンダリングするかを指定することができます。FusionGraph
コンポーネントは、Rect 領域を埋めるために必要なスケールを行います。
Rect は、インスペクタでシミュレーションされたキャンバス領域上をクリック&ドラッグすることで描くことができます。
角をドラッグする場合は、必ず「Rect」ドロワーを展開してください。
Fusion Graphs Layout Section(Fusionグラフのセクションのレイアウト)
レイアウトコントロールは、FusionGraph
コンポーネント (Fusion Stats キャンバスの最下部) のレイアウトに特に影響を与えるものです。
Default Layout(デフォルトのレイアウト)
子コンポーネントの FusionGraph
は、個々の設定が自動に設定されている場合、このレイアウト設定を使用します。Auto
に設定されている場合、各グラフの現在の幅/高さに基づいてレイアウトが選択されます。
No Text Overlap(テキストのオーバーラップなし)
この設定により、グラフUIでFusion Graphレイアウトオプションが使用されないようにします。テキストはグラフシェーダー(垂直テレメトリバー)と重なります。テキストが文字化けしてしまうような場合に使用します。良くある例は、VRのように、キャンバスがカメラに向かって完全にビルボード化されていない場合です。
Graph Column Count(グラフのカラム数)
グラフのカラム数は FusionStats.GraphColumnCount
設定で手動で設定することができます。FusionStats.GraphColumnCount
を 0 に設定すると、 FusionStats.GraphMaxWidth
の値が使用され、キャンバス幅がその値を超えると自動的に新しいカラムが作成されます。
Graph Max Width(グラフの最大幅)
FusionGraph
の要素が展開される最大幅。この幅を超えて展開されると、必要に応じて新しいカラムが追加されます。
Network Object Stats Section(ネットワークオブジェクトの統計セクション)
ルートのNetworkObject
コンポーネントに固有のオプション。
FusionStats
がGameObjectにNetworkObject
を使用して追加されている場合のみ有効です。
Enable Object Stats(オブジェクト統計の有効化)
ルートNetworkObject
コンポーネントのUI要素とテレメトリハンドリングを有効にします。
Object Title Height(オブジェクトタイトルの高さ)
GameObject名のラベル領域の高さ
Object Ids Height(オブジェクトIDの高さ)
NetworkObject IDとプレイヤー権限を表示する部分の高さ。
Object Meters Height(オブジェクトメートルの高さ)
水平方向のメートルバー部分の高さ。
Data Section(データセクション)
どのデータソースを使用するか、どのテレメトリを表示するかについてのオプション。
Runner(ランナー)
すべてのテレメトリデータには、NetworkRunner
の関連付けが必要です。これはネットワークランナーの起動時に自動的に検出されます。
Connect To(接続先)
Multi-Peer
モードでは、複数のランナーが存在する可能性があるので、どのタイプのランナーが見つかるかを制御したい場合があります。これらの SimulationModes
フラグと FusionStats.EnforceSingle
を組み合わせると、何人のピアが動作していても、この FusionStats
のインスタンスは1つしか存在しないことが確認できます。
Included Stats
各テレメトリ項目はレンダリングされる FusionGraph
セットに含めたり、除外したりすることができます。利用可能なテレメトリデータはエンジンの3つの部分から提供され、それに応じてグループ化されています。
Net Stats
:ラウンドトリップタイム(rtt)や送受信データの合計など、ネットワークトランスポートレイヤーの統計。Sim Stats
: 再シミュレーション回数、スナップショットサイズ、補間/予測の仕様など、Simulation
とNetworkRunner
の統計。Obj Stats
: RPC カウントや、Networked 状態の値が使用する帯域幅など、NetworkObject
固有のテレメトリ。
Life-Cycle Section
FusionStats
GameObject インスタンスのシングルトンや自己破壊に影響を与えるオプション。
Auto Destroy
trueの場合、FusionStats
GameObjectは、関連するNetworkRunner
が切断されたときに破棄されます。
Enforce Single
trueにすると、同じ FusionStats.GUID
を持つ NetworkStats
の GameObject
インスタンスを繰り返し破壊します。これはMulti-Peerモードにおいて、1つの FusionStats
オブジェクトのインスタンスが各ピアに1つではなく、1つだけ存在すべき場合に便利です。これは FusionStats.ConnectTo
と組み合わせて、どのピアタイプを監視するかを制御するために使用します。
GUID
Multi-Peer モードで、同じStatsオブジェクトの複数のインスタンスを識別するために FusionStats.EnforceSingle
と共に使用されます。