[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を利用することが必要になってきます。
という形で、大きく変わっていったのがサーバー(ホスト) 主導になる部分が多くなったという点です。