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

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

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); }
    }
}
일반적인 오류
모바일 디바이스용 네트워킹 팁