Version: 2018.4
Common Errors
Networking Tips for Mobile devices.

Customized Matchmaking callbacks

Note: UNet is deprecated, and will be removed from Unity in the future. A new system is under development. For more information and next steps see this blog post.

When using the Network ManagerA Networking component that manages the network state of a Project. More info
See in Glossary
with the Network Manager HUD, the NetworkManager.StartMatchmaker method enables matchmaking, and populates the NetworkManager.matchMaker property with a NetworkMatch object. Once this is active, the Network Manager HUD uses it and calls methods on NetworkManager to let you perform simple matchmaking.

There are virtual functions on NetworkManager that you can customize by deriving your own class from NetworkManager. You can then customize the way your new NetworkManager class responds to Matchmaker callbacks.

Here are the callbacks and their default implementations. If you override them, there are some methods which require that you call the base implementation, otherwise the functionality with the Network Manager HUD breaks. For example, the default implementation of OnMatchCreate, starts the host.

using UnityEngine;
using UnityEngine.__Networking__The Unity system that enables multiplayer gaming across a computer network. [More info](UNetOverview.html)<span class="tooltipGlossaryLink">See in [Glossary](Glossary.html#Networking)</span>;
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); }
    }
}
Common Errors
Networking Tips for Mobile devices.