概要
UnityNetcodeにてプレイヤー間で変数を同期するサンプルコードです。ホストプレイヤーだけが変数を書き換えて、その変数が全てのプレイヤーに同期される流れです。
本文
まずはPlayerCountクラスを作成して
using Unity.Netcode;
using UnityEngine.UI;
public class PlayerCount : NetworkBehaviour
{
private Text playersCountText;
private NetworkVariable<int> _playersNum = new(0, NetworkVariableReadPermission.Everyone);
private void Start()
{
playersCountText = GetComponent<Text>();
}
private void Update()
{
if (IsServer)
{
// 接続しているプレイヤーの数を取得
_playersNum.Value = NetworkManager.Singleton.ConnectedClients.Count;
}
playersCountText.text = "Players: " + _playersNum.Value;
}
}
Textを作成したらPlayerCountクラスを貼り付けます。NetworkBehaviourを継承したクラスを使う場合はNetworkObjectも必要なので一緒にアタッチしておきます。
_playersNumは各プレイヤー間で同期されているのでそれぞれの画面で正しくプレイヤー人数が表示されました。(変数を書き換えているのはあくまでもホストプレイヤーだけです)
UnityNetcode関連記事目次
1.UnityNetcodeをちょっと触ってみたい人用の記事
2.UnityNetcodeでマルチプレイヤーを試してみる記事
3.UnityNetcodeのマルチプレイヤーで位置を同期してみる
4.UnityNetcodeのマルチプレイヤーで変数を同期してみる ←