0
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

[Unity]UnityNetcodeのマルチプレイヤーで変数を同期してみる

Last updated at Posted at 2024-06-16

概要

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も必要なので一緒にアタッチしておきます。

スクリーンショット 2024-06-16 173233.png

_playersNumは各プレイヤー間で同期されているのでそれぞれの画面で正しくプレイヤー人数が表示されました。(変数を書き換えているのはあくまでもホストプレイヤーだけです)

スクリーンショット 2024-06-16 173619.png

UnityNetcode関連記事目次

1.UnityNetcodeをちょっと触ってみたい人用の記事
2.UnityNetcodeでマルチプレイヤーを試してみる記事
3.UnityNetcodeのマルチプレイヤーで位置を同期してみる
4.UnityNetcodeのマルチプレイヤーで変数を同期してみる ← :triangular_flag_on_post:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0