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

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

ノート: UNet は非推奨となり、今後 Unity から削除される予定です。新しいシステムが開発中です。詳細は ブログFAQ を参照してください。

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); }
    }
}
よく見るエラー
モバイルデバイスのためのネットワークのヒント