サーバー・クライアントの接続・切断時にメッセージを表示する【MLAPI】
引き続きMLAPIのお勉強。
前回記事
NetworkingManager
NetworkingManager はシングルトンクラスで、ネットワーク関連の設定の管理を行います。
ホスト接続・クライアント接続
以前のこちらの記事で、ホスト接続、クライアント接続開始の際に以下を利用していました。
NetworkingManager.Singleton.StartHost(); NetworkingManager.Singleton.StartClient();
ホスト切断・クライアント切断
同様にして、切断時には以下を呼び出します。
NetworkingManager.Singleton.StopHost(); NetworkingManager.Singleton.StopClient();
サーバーが立ち上がる際に呼び出されるコールバック
NetworkingManager には OnServerStarted
というサーバーが立ち上がる際に呼び出されるイベント関数があります。
クライアント接続・切断時に呼び出されるコールバック
クライアント接続の際は OnClientConnectedCallback
が、切断の際は OnClientDisconnectedCallback
が呼び出されます。
接続・切断時にメッセージを表示してみる
以上を利用して、接続・切断時にメッセージを表示してみます。 MLAPI_Initializer.cs を編集します。
using UnityEngine; using UnityEngine.UI; using MLAPI; public class MLAPI_Initializer : MonoBehaviour { [SerializeField] private Button _startHostButton; [SerializeField] private Button _startClientButton; [SerializeField] private Button _stopHostButton; [SerializeField] private Button _stopClientButton; private void Start() { _startHostButton.onClick.AddListener(StartHost); _startClientButton.onClick.AddListener(StartClient); _stopHostButton.onClick.AddListener(StopHost); _stopClientButton.onClick.AddListener(StopClient); } private void StartHost() { NetworkingManager.Singleton.OnServerStarted += OnServerStartedCallback; NetworkingManager.Singleton.OnClientConnectedCallback += OnClientConnectedCallback; NetworkingManager.Singleton.OnClientDisconnectCallback += OnClientDisconnectedCallback; NetworkingManager.Singleton.StartHost(); } private void StartClient() { NetworkingManager.Singleton.OnClientConnectedCallback += OnClientConnectedCallback; NetworkingManager.Singleton.OnClientDisconnectCallback += OnClientDisconnectedCallback; NetworkingManager.Singleton.StartClient(); } private void StopHost() { NetworkingManager.Singleton.OnServerStarted -= OnServerStartedCallback; NetworkingManager.Singleton.OnClientConnectedCallback -= OnClientConnectedCallback; NetworkingManager.Singleton.OnClientDisconnectCallback -= OnClientDisconnectedCallback; NetworkingManager.Singleton.StopHost(); } private void StopClient() { NetworkingManager.Singleton.OnClientConnectedCallback -= OnClientConnectedCallback; NetworkingManager.Singleton.OnClientDisconnectCallback -= OnClientDisconnectedCallback; NetworkingManager.Singleton.StopClient(); } /// <summary> /// クライアントが接続した際に呼び出される /// </summary> private void OnClientConnectedCallback(ulong clientId) { Debug.Log($"Client connected {clientId}"); } /// <summary> /// クライアントが切断した際に呼び出される /// </summary> private void OnClientDisconnectedCallback(ulong clientId) { Debug.Log($"Client disconnected {clientId}"); } /// <summary> /// サーバーが立ち上がった際に呼び出される /// </summary> private void OnServerStartedCallback() { Debug.Log("Server started"); } }
これで実際にメッセージがデバッグコンソールに表示されるか確認してみます。
サーバー立ち上げ (ホスト入室)
Server Started. が表示されていますね。
クライアント接続時
ホスト側・クライアント側にも Client Connected 2 が表示されています。
クライアント切断時
ホスト側で Client disconnected 2 が表示されています。
clientId は 2になっていましたが、入室していくとインクリメントされていく感じですかね。
NetworkingManager.cs の中身のコード読む感じ、それっぽい。