[Unity]サンプルプロジェクトをMLAPI→Netcode for GameObjectsへ移植

Unityでマルチプレイ用のMLAPIは Netcode for GameObjectsへと名前を変え正式なソリューションとなりました。
また、Netcode for GameObjectsは version 1.0-preがリリースされて、Version 1のリリースも見えてきました。

以前にMLAPIがバージョンアップしたので、どのへんが変わったのかという記事を書きました。

今回、MLAPI ー>Netcode for GameObjects も変更がありました。

サンプルプロジェクトを移行した際にハマった内容を中心にして、その変更周りをざっくり紹介する記事になります。

変更内容について
・Namespaceの変更
・Networkイベント周りの挙動の変更
・UnityTransportの登場
・NetworkVariablesの変更
・NetworkTransformの挙動変更

■Namespceの変更

・namespace MLAPI以下にあったものの多くが Unity.Netcode ネームスペース以下に移る形になりました。

■Networkイベント周りの挙動の変更

NetworkManagerのイベント呼び出し周りの挙動が少し変わっていました。
具体的には、自分自身が接続・切断した時に呼び出されたコールバックが呼び出されなくなったりなどが起きました。

■NetworkVariablesの変更

これまではPrefabのOwnerが書き換え可能でしたが、Server側でないと書き換えができなくなりました。
書き換えを行う場合はRPCで呼び出してサーバー側に書き換えを依頼するという形になってきます。

■NetworkTransformでの挙動変更

これまではPrefabのOwnerの値を基本的に信じて、そちらを優先するという扱いになっていたのですが…
Netcode for GameObjectsではサーバー側が優先されるようになりました。

従来通り動かしたい場合は、パッケージのSamplesにあるClientNetworkTransformを利用することが必要になってきます。

画像1

という形で、大きく変わっていったのがサーバー(ホスト) 主導になる部分が多くなったという点です。

この記事が気に入ったらサポートをしてみませんか?