방에 실제로 입장하지 않고 방 정보를 얻는 방법

방 정보를 얻는 방법에는 몇 가지가 있습니다.

첫 번째는 SearchJoinableRoom() 메서드를 이용하는 것입니다. 예를 들어, 다음 코드는 처음 10개 RoomInfo를 리턴합니다.

StrixNetwork.instance.SearchJoinableRoom(100, 0,
    args => {
        foreach (var roomInfo in args.roomInfoCollection) {
            Debug.Log(String.Format("Room {0}, {1}", roomInfo.roomId, roomInfo.name));
        }
    },
    args => {
        Debug.Log("SearchJoinableRoom failed. error = " + args.cause);
    }
);

여기서 args.roomInfoCollection은 RoomInfo 인스턴스의 집합입니다. 이 RoomInfo 클래스에는 다음 필드가 있습니다.

필드 이름

타입

id

long

roomId

long

name

string

protocol

string

port

int

host

string

isJoinable

bool

isPasswordProtected

bool

properties

IDictionary <string, object>

state

int

memberCount

int

capacity

int

nodeUid

UID

nodeType

int

nodeProperties

IDictionary <string, object>

stringKey

string

key1

double

key2

double

key3

double

key4

double

key5

double

key6

double

key7

double

key8

double

다른 한 가지는 GetNodeRoom() 메서드를 이용하는 것입니다. 여기서는 기본 키를 기준으로 특정 방에 관한 정보가 리턴됩니다. CustomizableMatchNodeClient 메서드입니다. 코드는 다음과 같습니다.

StrixNetwork.instance.masterSession.nodeClient.GetNodeRoom(
    new GetMessage<CustomizableMatchServerNodeRoom>(roomInfo.roomId),
    args => {
        var room = args.Result.GetModel();
        Debug.Log(String.Format("Room {0}, {1}", room.GetPrimaryKey(), room.GetName()));
    },
    args => {
        Debug.Log("GetNodeRoom failed. error = " + args.Result.ToString());
    }
);

GetNodeRoom()는 CustomizableMatchServerNodeRoom 인스턴스를 리턴합니다. 이 클래스는 RoomInfo와 정보가 비슷합니다. 단, 이 정보를 얻기 위해서는 클래스 속성이 아니라 메서드를 사용해야 합니다.

GetMembers() 함수는 방에 입장하지 않고 멤버를 리턴할 수 있습니다.

StrixNetwork.instance.roomSession.roomClient.GetMembers(
    new RoomGetMembersMessage<CustomizableMatchRoom>(roomInfo.roomId),
    args => {
        foreach (var member in args.Result.GetMemberCollection()) {
            Debug.Log(String.Format("Member {0}, {1}", member.GetPrimaryKey(), member.GetName()));
        }
    },
    args => {
        Debug.Log("GetRoomMembers failed. error = " + args.Result.ToString());
    }
);

여기서 GetMembers()는 인스턴스 ICollection을 리턴하며 여기에는 CustomizableMatchRoomMember 인스턴스가 저장되어 있습니다.