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

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

중요: UNet은 지원이 중단된 솔루션이며, 새로운 멀티플레이어 및 네트워킹 솔루션(게임 오브젝트용 넷코드)이 개발 중입니다. 자세한 내용과 다음 단계는 게임 오브젝트용 Unity 넷코드 웹사이트에 있는 정보를 참조하십시오.

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