Version: 2021.2
言語: 日本語
よく見るエラー
モバイルデバイスのためのネットワークのヒント

カスタマイズしたマッチメイクのコールバック

重要: UNet は非推奨のソリューションになり、現在、新しい Multiplayer とネットワーキングソリューション (Netcode for GameObjects) が開発中です。詳細は、GameObjects Web サイトの Unity Netcode を参照してください。

Network ManagerNetwork Manager HUD とともに使用すると、NetworkManager.StartMatchmaker メソッドはマッチメイキングを有効にし、NetworkManager.matchMaker プロパティに NetworkMatch オブジェクトを設定します。これがアクティブになると、Network Manager HUD はこれを利用し、NetworkManager 上のメソッドを呼び出して簡単にマッチメイクを実行できるようになります。

NetworkManager には、継承して独自のクラスを作りカスタマイズできる仮想関数があります。その次に、新しくカスタマイズした NetworkManager クラスが Matchmaker コールバックに応答する方法をカスタマイズします。

ここにコールバックとそのデフォルト実装があります。それらをオーバーライドする場合に、メソッドの中には基本実装を呼び出さなければならないものがあります。それを行わないと、Network Manager HUD を使った機能がクラッシュします。 例えば、OnMatchCreate のデフォルト実装がそうです。これはホストを起動します。

using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.Networking.Match;

public class CustomManager : NetworkManager {

    public override void OnMatchCreate(bool success, string extendedInfo, MatchInfo matchInfo) {
        if (LogFilter.logDebug) { Debug.LogFormat("NetworkManager OnMatchCreate Success:{0}, ExtendedInfo:{1}, matchInfo:{2}", success, extendedInfo, matchInfo); }
        if(success)
            StartHost(matchInfo);
    }

    public override void OnMatchJoined(bool success, string extendedInfo, MatchInfo matchInfo) {
        if (LogFilter.logDebug) { Debug.LogFormat("NetworkManager OnMatchJoined Success:{0}, ExtendedInfo:{1}, matchInfo:{2}", success, extendedInfo, matchInfo); }
        if(success)
            StartClient(matchInfo);
    }

    public override void OnMatchList(bool success, string extendedInfo, List<MatchInfoSnapshot> matchList) {
        if (LogFilter.logDebug) { Debug.LogFormat("NetworkManager OnMatchList Success:{0}, ExtendedInfo:{1}, matchList.Count:{2}", success, extendedInfo, matchList.Count); }
        matches = matchList;
    }

    public override void OnDestroyMatch(bool success, string extendedInfo) {
        if (LogFilter.logDebug) { Debug.LogFormat("NetworkManager OnDestroyMatch Success:{0}, ExtendedInfo:{1}", success, extendedInfo); }
    }

    public override void OnDropConnection(bool success, string extendedInfo) {
        if (LogFilter.logDebug) { Debug.LogFormat("NetworkManager OnDestroyMatch Success:{0}, ExtendedInfo:{1}", success, extendedInfo); }
    }

    public override void OnSetMatchAttributes(bool success, string extendedInfo) {
        if (LogFilter.logDebug) { Debug.LogFormat("NetworkManager OnDestroyMatch Success:{0}, ExtendedInfo:{1}", success, extendedInfo); }
    }
}
よく見るエラー
モバイルデバイスのためのネットワークのヒント
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961