FusionStats
概要
Fusion Statsは、ネットワークテレメトリーを監視するためのUIコンポーネントで構成されています。FusionStatsコンポーネントは、テレメトリーのUI要素を生成・初期化・制御する主要なコンポーネントです。
Fusion Statsは、標準的なUnityEngine.UIコンポーネントを使用しているため、スクリーンオーバーレイで表示したり、3D空間のオブジェクトにアタッチして表示したりすることが可能です。
基本的な使用方法
Fusion Statsをシーンに追加するには、
- Unity Editorのメニューから、
Fusion > GameObject > Add Fusion Statsを実行する - ヒエラルキーか、ヒエラルキー上の
GameObjectを右クリックして、Fusion > Add Fusion Statsを選択する
- ゲームオブジェクトが選択されている場合:
FusionStatsのデフォルトはStatsCanvasType.GameObjectとなり、3D空間上の選択したオブジェクトにアタッチされて表示されます - ゲームオブジェクトが選択されていない場合:
FusionStatsのデフォルトはStatsCanvasType.Overlayとなり、スクリーン上に表示されます
このメニューは、自動的にFusionStatsBillboardコンポーネントをオブジェクトに追加します。FusionStats.CanvasTypeがGameObjectに設定されている場合、FusionStatsBillboardによって、ゲームオブジェクトが自動的にカメラの方を向くようになります。
ランタイムの機能
シミュレーションの実行中は、いくつかの追加機能が利用可能です。ここでは、実行時に使用できるFusionGraphの様々な「隠れた」機能を紹介します。
ビューオプション
FusionGraphのタイトルをクリックすると、ビューオプションのドロップダウンリストが表示されます。
平均オプション
実行時にFusionGraphの数値表示をクリックすると、現在のデータソースで利用可能な平均オプションが切り替わります。
- 秒あたりの平均
- ティックごとの平均
- サンプルあたりの平均
ハイライト
パネルの一番上にあるNetworkRunnerの名前をクリックすると、ヒエラルキー上のFusionStatsコンポーネントがハイライトされます。ゲームオブジェクトが選択されていない場合、インスペクター上にFusionStatsコンポーネントが表示されます。
FusionStatsコンポーネント
FusionStatsは、Fusion Statsの主要なコンポーネントになります。子CanvasとUIコンポーネントを生成し、実行時に、それらコンポーネントとNetworkRunnerやNetworkObjectのデータソースとの接続を管理します。
Redraw Interval
UIの更新頻度をこの値以下に制限します。値が大きいほど、パフォーマンスが向上します。
Layout セクション
Fusion StatsのCanvasの全体的なレイアウトに影響を与える項目です。
Canvas Type
Canvasには、2つのモードがあります。
GameObject:キャンバスを3D空間で表示Overlay:キャンバスをスクリーン空間で表示
GameObject Rect / Overlay Rect
矩形は編集可能で、UI.Canvas要素をどこに表示するかを定義できます。任意の画面端や隅に、Canvasのグラフを表示することができます。
CanvasTypeがGameObjectの場合は、GameObjectRectが使用され、アタッチされたオブジェクトの中心からのオフセットを設定することができます。
CanvasTypeがOverlayの場合は、OverlayRectが使用され、スクリーンのどこに表示するかを指定できます。FusionGraphコンポーネントは、矩形に合わせて拡大縮小されます。
Canvas領域をクリック/ドラッグすると、インスペクター上で矩形を編集できます。
角をドラッグしたい場合は、かならずドロワーを展開してください。
Fusion Graphs Layout セクション
FusionGraphコンポーネント(Fusion StatsのCanvasの下位要素)のレイアウトに影響を与える項目です。
Default Layout
Autoに設定された子要素のFusionGraphコンポーネントは、このレイアウト設定を使用して、各グラフの幅/高さに基づいたレイアウトが選択されます。
No Text Overlap
これを設定すると、グラフのUIにはFusion Graphs Layoutオプションが使用されず、テキストがグラフ(縦のバー)にオーバーラップするようになります。テキストが文字化けするケースで、この設定を使用してください。これは一般的に、VRのような、Canvasがカメラの方を向くようにビルボード化されていないケースで発生します。
Graph Column Count
グラフのカラム数は、FusionStats.GraphColumnCountから手動で設定できます。FusionStats.GraphColumnCountを0に設定すると、FusionStats.GraphMaxWidthの値が使用され、Canvasの幅がこの値を超えると自動的に新しいカラムが作成されます。
Graph Max Width
FusionGraph要素の最大幅です。この幅を超えると、必要に応じて新しいカラムが追加されます。
Network Object Stats セクション
ルートのNetworkObjectコンポーネントに関するオプションです。
NetworkObjectのゲームオブジェクトに、FusionStatsが追加されている場合のみ有効になります。
Enable Object Stats
ルートのNetworkObjectコンポーネントに対するUI表示とテレメトリー処理を有効にします。
Object Title Height
ゲームオブジェクト名のラベルの高さです。
Object Ids Height
ネットワークオブジェクトのIDと、プレイヤーの権限を表示する部分の高さです。
Object Meters Height
横のメーターバー部分の高さです。
Data セクション
どのデータソースを使用し、どのテレメトリーを表示するかのオプションです。
Runner
全てのテレメトリーデータには、関連するNetworkRunnerが必要です。これは、NetworkRunnerが起動した時に、自動的に検出されます。
Connect To
マルチピアモードでは、複数のNetworkRunnerが存在する可能性があるため、どのNetworkRunnerを検出するかを制御したい場合があります。SimulationModesフラグとFusionStats.EnforceSingleを併用すると、複数のピアが動作していても、FusionStatsのインスタンスを1つだけに制限できます。
Included Stats
各テレメトリー項目は、FusionGraphの表示に含めたり除外したりすることができます。利用可能なテレメトリーデータは、以下の3つのグループに分けられます。
Net Stats:ラウンドトリップタイム(RTT)や送受信データ量などの、ネットワークトランスポートレイヤーの統計Sim Stats:再シミュレーション数・スナップショットサイズ・補間/予測の設定などの、SimulationとNetworkRunnerの統計Obj Stats:RPC数・ネットワークプロパティの帯域幅使用量などの、NetworkObject関連の統計
Life-Cycle セクション
FusionStatsのゲームオブジェクトインスタンスの生成/破棄に影響するオプションです。
Auto Destroy
これを設定すると、関連するNetworkRunnerが切断された時に、FusionStatsのゲームオブジェクトは破棄されます。
Enforce Single
これを設定すると、同じFusionStats.GUIDを持つNetworkStatsのゲームオブジェクトインスタンスを破棄します。マルチピアモードにおいて、FusionStatsオブジェクトのインスタンスを、ピアごとではなく、1つだけに制限したい場合に便利です。どのピアを監視するかを制御するために、FusionStats.ConnectToと併用してください。
GUID
マルチピアモードにおいて、FusionStats.EnforceSingleと併用して、同じFusionStatsオブジェクトの複数のインスタンスを識別します。