Version: 2020.3
일반적인 오류
모바일 디바이스용 네트워킹 팁

커스터마이즈된 매치메이킹 콜백

Important: UNet is a deprecated solution, and a new Multiplayer and Networking Solution (MLAPI) is under development. For more information and next steps see the information on the Unity MLAPI website.

Network ManagerNetwork Manager HUD와 함께 사용하면 NetworkManager.StartMatchmaker 메서드가 매치메이킹을 활성화하고 NetworkManager.matchMaker 프로퍼티를 NetworkMatch 오브젝트로 채웁니다. 일단 활성화되면 Network Manager HUD는 이 프로퍼티를 사용하고 NetworkManager에 대한 메서드를 호출하여 단순한 매치메이킹을 수행합니다.

NetworkManager에는 NetworkManager에서 고유 클래스를 파생하여 커스터마이즈할 수 있는 가상 함수가 있습니다. 그런 다음 새 NetworkManager 클래스가 매치메이커 콜백에 응답하는 방식을 커스터마이즈할 수 있습니다.

여기에는 콜백과 해당 기본 구현이 있습니다. 이 콜백을 오버라이드하는 경우 일부 메서드는 기본 구현을 호출해야 합니다. 그렇지 않으면 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); }
    }
}
일반적인 오류
모바일 디바이스용 네트워킹 팁