일단 로비씬에선 유니티 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);
}
}