Network ID Utility
Network IDは、ネットワーク通信を行う際にどのオブジェクトがどれであるかを識別するために使用されるIDです。ほとんどの場合、これを意識する必要はありません。しかし、プレイヤーが技術的に異なる2つのワールドバージョンを読み込んでいるクロスプラットフォーム対応ワールドを作成する場合などには、問題になることがあります。
Network IDは、それらの異なるバージョン間を結びつけるリンクであり、全員が同じものを表示し、データが正しいオブジェクトに送信されることを保証します。
具体的に説明すると、Network IDはGameObjectに割り当てられた単なる番号です。例えば、ID 1のビーチボールとID 2のアイスクリームコーンがあるとします。これらが混同されると、あなたはビーチボールを蹴っているつもりなのに、他の人からはアイスクリームを蹴っているように見えてしまう、といった事態が発生する可能性があります。
こうした潜在的な問題を解決し、異なるシーン間を同期させるために、私たちはNetwork ID utilityを作成しました。
Network ID インポート/エクスポートユーティリティ
このユーティリティを使用すると、Network ID を保存して、シーンやプロジェクト間で転送することができます。Unity Editor 内の VRChat SDK/Utilities/Network ID Import and Export Utility からアクセス可能です。
このユーティリティが必要となるのは、クロスプラットフォーム対応のワールドを開発しており、各バージョンが異なるシーンやプロジェクトに分かれている場合のみです。

このツールを使用すると、シーン全体に含まれるすべての Network ID のリストが表示されます。まだリストがない場合は、Regenerate Scene IDs をクリックしてください。

あるシーンから別のシーンへ Network ID を転送する準備ができたら、Export ボタンをクリックしてファイルを任意の場所に保存します。その後、転送先のシーンを開いて Import をクリックし、保存したファイルを選択してください。
このツールは、各オブジェクトの Network ID をシーン内の階層パスに基づいてエクスポートします。例: {"10":"/CubePickup", "11":"/Prefabs/SyncedPen"}
シーンに Network ID をインポートする際は、ネットワークオブジェクトへのパスがそれぞれのシーンで同一であることを確認してください。ネットワーク化されていないオブジェクトは関係ありません。同期が必要なオブジェクトと競合しない限り、シーン間で構成が異なっていても問題ありません。
ネットワーク化されたゲームオブジェクトの名前にスラッシュ / を使用しないでください。ゲームオブジェクトのパスはスラッシュを区切り文字として使用するため、予期しない動作を防ぐために使用を避けてください。

2つのシーン間で情報が一致していれば、Accept All ボタンを備えた大きなブロックが表示されます。そのままクリックすれば完了です!
競合の解決
このユーティリティには、いくつかの競合解決ツールが含まれています。競合をスキャンするには Scan For Conflicts ボタンを押すか、Auto Scan にチェックを入れてシーンでの作業中に継続的にスキャンするようにします。

ファイル内には存在するがシーン内には存在しないオブジェクトの例を以下に示します。ファイルは指定されたパスに Network ID が存在すると伝えていますが、そのパスにオブジェクトを見つけることができません。この時点で、無視するか、別のオブジェクトを指定するかを選択できます。このオブジェクトがシーン内に存在する必要がないと確信している場合は、安全に無視して構いません。しかし、シーン内に存在するはずのオブジェクトであり、単に名前が異なるだけの場合は、それを選択してください。この競合を解決すると、Network ID を適用できるセクションへ移動します。

別の例として、あるオブジェクトが Network ID 20 を持っていると主張しているものの、ファイル上では異なるパスが 20 を持つべきであるというケースです。
このような状況やその他の予期せぬ事態は、新しいファイルをインポートする前にシーン内に既に Network ID が存在している場合にのみ発生します。シーン間で ID をコピーする場合は、この問題が発生しないよう、インポート前に ID をクリアしておくのが最善です。ただし、これらのオプションは、既存の Network ID を壊さずにシーンの修復を試みるなど、非常に特殊な操作が必要な場合に備えて用意されています。
これらの競合を解決する必要がある場合、Ignore All ボタンをクリックしてシーンに一切変更を加えないか、個別に ID を割り当てるオブジェクトを選択することができます。Select ボタンをクリックすると、選択したオブジェクトに ID が適用され、競合が解決されます。これにより 1 つまたは複数の競合が解決されるため、1 つ解決しただけで多くの競合が消えたとしても驚かないでください。
最終更新: