비밀번호가 일치하는 방을 찾아서 일치시킵니다.
이번에도 다양한 단비트 엔진의 기능을 사용해 보세요!그래서
방의 일치 기능을 계속 충실하게 하다.( 마지막 링크 )
환경은 다음과 같다.
win10 64bit, Unity2018.3.3f1, Monobit Unity Networking2.0 v2.6
한 일
방에 비밀번호 자물쇠 기능을 설치하여 입실 제어를 하다.
1. RoomName에 방 이름을 입력하고 Password에 암호를 입력하고 만들기 버튼을 누릅니다.
2. 만들어진 방이 나열되어 있기 때문에 들어가고 싶은 방의 Password를 입력하고 Join 버튼을 누릅니다.
3. 비밀번호 일치 판정, 일치하면 입실 가능
방 사용자 정의 매개 변수를 사용하여 방 만들기
// ルームカスタムパラメータ変数
private Hashtable customRoomParam = new Hashtable();
// パスワード入力
customRoomParam["Password"] = GUILayout.TextField(customRoomParam.ContainsKey("Password") ? customRoomParam["Password"].ToString() : "");
// ルーム設定
RoomSettings roomSetings = new RoomSettings()
{
isVisible = true,
isOpen = true,
maxPlayers = maxPlayerCount,
roomParameters = customRoomParam,
lobbyParameters = new string[] {}
};
// ルーム作成
MonobitNetwork.CreateRoom(roomName, roomSetings, null);
UN에서는 기본 룸 설정isVisible
(로비에서 공개/비공개)isOpen
(룸에 들어갈 수 있는지)maxPlayers
(룸에 들어갈 수 있는 인원수) 외에 룸 사용자 정의 매개 변수라는 키에 값을 지정하여 룸 조건을 만들 수 있습니다.customRoomParam["Password"]
라는 맵에 암호를 입력하여 방 설정에 반영합니다.( 참조 링크 )암호 일치 판정 입실 제어
private Hashtable joinRoomParam = new Hashtable();
// 全ルーム一覧表示
foreach (RoomData roomData in MonobitNetwork.GetRoomData())
{
GUILayout.BeginHorizontal();
// ルーム名ラベル表示
GUILayout.Label("Room Name: " + roomData.name + "(" + roomData.playerCount + "/" + ((roomData.maxPlayers == 0) ? "-" : roomData.maxPlayers.ToString()) + ")");
// パスワード入力
GUILayout.Label("Password ");
joinRoomParam[roomData.name] = GUILayout.TextField(joinRoomParam.ContainsKey(roomData.name) ? joinRoomParam[roomData.name].ToString() : "");
if (GUILayout.Button("Join"))
{
// 一致判定
if(roomData.customParameters["Password"].Equals(joinRoomParam[roomData.name]))
{
// ルームに入室
MonobitNetwork.JoinRoom(roomData.name);
}
joinRoomParam[roomData.name] = "";
}
GUILayout.EndHorizontal();
}
MonobitNetwork.GetRoomData()
에 존재하는 모든 방의 정보.우선 foreach
RoomData roomData
에 방 정보를 저장합니다.다음은
RoomData.customParameters
에서 이 방의 설정 정보를 얻습니다.마지막으로 방 설정에 포함된 비밀번호와 입력한 비밀번호를 일치 판정
MonobitNetwork.JoinRoom()
하고 끝냅니다.마지막
별말씀을요. Join RandomRoom () 이라는 함수에 빠졌어요.
UN 공식 샘플의 "MUN 클라이언트의 주요 기능 > 일치 > 방 필터"에는 다음 코드가 있습니다.
// 該当するルームに入室する
if (GUILayout.Button("Join Room", GUILayout.Width(150)))
{
// ルームカスタムパラメータへの登録
this.customRoomParam["Password"] = this.joinRoomPassword[roomData.name];
MonobitNetwork.JoinRandomRoom(this.customRoomParam, 0);
this.customRoomParam["Password"] = "";
}
공식은 모두 정확하지만 이 해설과 코드만 읽으면 여러 방을 지을 생각은 없는 것 같다.JoinRandomRoom()을 예로 유지하면 모든 방에서 입력한 암호와 일치하는 방으로 들어갑니다.어느 방에 대한 암호 일치 판정을 지정할 수 없을 것 같다는 얘기다.
따라서 이번 클라이언트가 입력한 비밀번호와 방이 설정한 비밀번호는 함수 밖에서 일치 판정을 해야 한다.
좀 복잡해요.
참조 링크
Reference
이 문제에 관하여(비밀번호가 일치하는 방을 찾아서 일치시킵니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nisoka/items/34c62eb49f416de7a869텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)