매칭이 안되는것 같습니다

일단 로비씬에선 유니티 start 함수로 Backend.Match.JoinMatchMakingServer함수를 실행하여 매칭서버에 접속하였고 게임 시작 버튼을 누르면 Match 씬으로 넘어가면서 Backend.Match.CreateMatchRoom()함수를 실행해 대기방을 생성했습니다. bool 변수로 모드를 선택할 수 있게 해줬고 Backend.Match.RequestMatchMaking(matchType, modType, inDate) 로 매칭을 신청하였습니다. 빌드를 하여 일대일 모드로 두 디바이스 모두 매칭을 돌렸으나 매칭이 성사되지 않았습니다. 다음은 코드입니다.

public class MatchManager : MonoBehaviour
{
    public ErrorInfo errorInfo;
    [SerializeField] string indate;

    public Button btn_1_1;
    public Button btn_5;
    public Button btn_10;
    [SerializeField] private bool Is_1_1;
    [SerializeField] private bool Is_5;
    [SerializeField] private bool Is_10;
    public GameObject text_1_1;
    public GameObject text_5;
    public GameObject text_10;
    public Text Mod_1;

    public GameObject MainCanvas;
    public GameObject Matchinging;

    string serverAddress;
    ushort serverPort;
    string roomToken;


    
    private void Update()
    {
        Backend.Match.Poll();
        Backend.Match.GetMatchList();
        Backend.Match.OnMatchMakingResponse += (args) =>
        {
            serverAddress = args.RoomInfo.m_inGameServerEndPoint.m_address;
            serverPort = args.RoomInfo.m_inGameServerEndPoint.m_port;
            roomToken = args.RoomInfo.m_inGameRoomToken;
            JoinInGameServer();
        };
        Backend.Match.OnSessionJoinInServer += (args) => {
            GoGame();
        };
        Backend.Match.OnSessionListInServer += (args) => {
            // TODO
        };
        Backend.Match.OnMatchInGameAccess += (args) => {
            // TODO
        };
    }
    
    void JoinInGameServer() // 임의의 함수
    {
        bool isReconnect = true;
        ErrorInfo errorInfo = null;

        if (Backend.Match.JoinGameServer(serverAddress, serverPort, isReconnect, out errorInfo) == false)
        {
            // 에러 확인
            return;
        }
    }

    public void GoGame()
    {
        Backend.Match.JoinGameRoom(roomToken);
        SceneManager.LoadScene(3);
    }

    
    public void Set_1()
    {
        Is_1_1 = true;
        Is_5 = false;
        Is_10 = false;
    }

    public void Set_5()
    {
        Is_1_1 = false;
        Is_5 = true;
        Is_10 = false;
    }

    public void Set_10()
    {
        Is_1_1 = false;
        Is_5 = false;
        Is_10 = true;
    }

    public void StartMaching()
    {
        if(Is_1_1)
        {
            var brw = Backend.Match;
            brw.RequestMatchMaking(MatchType.Point, MatchModeType.OneOnOne, "뒤끝콘솔에서 가져온 Indate");
            MainCanvas.SetActive(false);
            Matchinging.SetActive(true);
        }
        if (Is_5)
        {
            Backend.Match.RequestMatchMaking(MatchType.Point, MatchModeType.Melee, "뒤끝콘솔에서 가져온 Indate");
            MainCanvas.SetActive(false);
            Matchinging.SetActive(true);
        }
        if (Is_10)
        {
            Backend.Match.RequestMatchMaking(MatchType.Point, MatchModeType.Melee, "뒤끝콘솔에서 가져온 Indate");
            MainCanvas.SetActive(false);
            Matchinging.SetActive(true);
        }
    }

    public void CancelMatching()
    {
        Backend.Match.CancelMatchMaking();
        MainCanvas.SetActive(true);
        Matchinging.SetActive(false);
    }

    
}

안녕하세요 개발자님.

아래 수정된 코드를 참고하여 개발해주시면 감사하겠습니다.

  1. 핸들러는 응답에 대해 등록하는 함수로, 한번만 호출해야합니다.(+=의 경우 추가적으로 핸들러를 붙이기 때문에 Update문에 있을 경우 한 요청에 무수한 응답이 오게 됩니다.)

  2. isReconnect는 처음 접속하는 게임일 경우(이전 게임 재접속이 아닐 경우), false여야합니다.

public class MatchManager : MonoBehaviour
{
    public ErrorInfo errorInfo;
    [SerializeField] string indate;

    public Button btn_1_1;
    public Button btn_5;
    public Button btn_10;
    [SerializeField] private bool Is_1_1;
    [SerializeField] private bool Is_5;
    [SerializeField] private bool Is_10;
    public GameObject text_1_1;
    public GameObject text_5;
    public GameObject text_10;
    public Text Mod_1;

    public GameObject MainCanvas;
    public GameObject Matchinging;

    string serverAddress;
    ushort serverPort;
    string roomToken;

    //수정된 부분1
    void Start()
  {
    Backend.Match.GetMatchList();
        Backend.Match.OnMatchMakingResponse += (args) =>
        {
            serverAddress = args.RoomInfo.m_inGameServerEndPoint.m_address;
            serverPort = args.RoomInfo.m_inGameServerEndPoint.m_port;
            roomToken = args.RoomInfo.m_inGameRoomToken;
            JoinInGameServer();
        };
        Backend.Match.OnSessionJoinInServer += (args) => {
            GoGame();
        };
        Backend.Match.OnSessionListInServer += (args) => {
            // TODO
        };
        Backend.Match.OnMatchInGameAccess += (args) => {
            // TODO
        };
  }
    //수정된 부분 2
    private void Update()
    {
        Backend.Match.Poll();
        
    }
    
    void JoinInGameServer() // 임의의 함수
    {
        //수정된 부분 3 isReconnect = true -> false
        bool isReconnect = false; // 재접속할 경우에만 true로 이전 게임에 접속합니다. 새롭게 게임을 매칭할때에는 false여야합니다.
        ErrorInfo errorInfo = null;

        if (Backend.Match.JoinGameServer(serverAddress, serverPort, isReconnect, out errorInfo) == false)
        {
            // 에러 확인
            return;
        }
    }

    public void GoGame()
    {
        Backend.Match.JoinGameRoom(roomToken);
        SceneManager.LoadScene(3);
    }

    
    public void Set_1()
    {
        Is_1_1 = true;
        Is_5 = false;
        Is_10 = false;
    }

    public void Set_5()
    {
        Is_1_1 = false;
        Is_5 = true;
        Is_10 = false;
    }

    public void Set_10()
    {
        Is_1_1 = false;
        Is_5 = false;
        Is_10 = true;
    }

    public void StartMaching()
    {
        if(Is_1_1)
        {
            var brw = Backend.Match;
            brw.RequestMatchMaking(MatchType.Point, MatchModeType.OneOnOne, "뒤끝콘솔에서 가져온 Indate");
            MainCanvas.SetActive(false);
            Matchinging.SetActive(true);
        }
        if (Is_5)
        {
            Backend.Match.RequestMatchMaking(MatchType.Point, MatchModeType.Melee, "뒤끝콘솔에서 가져온 Indate");
            MainCanvas.SetActive(false);
            Matchinging.SetActive(true);
        }
        if (Is_10)
        {
            Backend.Match.RequestMatchMaking(MatchType.Point, MatchModeType.Melee, "뒤끝콘솔에서 가져온 Indate");
            MainCanvas.SetActive(false);
            Matchinging.SetActive(true);
        }
    }

    public void CancelMatching()
    {
        Backend.Match.CancelMatchMaking();
        MainCanvas.SetActive(true);
        Matchinging.SetActive(false);
    }

    
}