비밀번호가 일치하는 방을 찾아서 일치시킵니다.

니소카입니다.
이번에도 다양한 단비트 엔진의 기능을 사용해 보세요!그래서
방의 일치 기능을 계속 충실하게 하다.( 마지막 링크 )
환경은 다음과 같다.
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()에 존재하는 모든 방의 정보.
우선 foreachRoomData 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()을 예로 유지하면 모든 방에서 입력한 암호와 일치하는 방으로 들어갑니다.어느 방에 대한 암호 일치 판정을 지정할 수 없을 것 같다는 얘기다.
따라서 이번 클라이언트가 입력한 비밀번호와 방이 설정한 비밀번호는 함수 밖에서 일치 판정을 해야 한다.
좀 복잡해요.

참조 링크

  • Monobit Unity Networking2.0 공식 링크
  • 방 사용자 정의 매개변수 정보
  • UN - 룸 필터 예
  • 좋은 웹페이지 즐겨찾기