방에 실제로 입장하지 않고 방 정보를 얻는 방법¶
방 정보를 얻는 방법에는 몇 가지가 있습니다.
첫 번째는 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 인스턴스가 저장되어 있습니다.