방과 방 멤버 정보 가져오기¶
StrixNetwork
싱글톤의 room
속성을 이용하여 현재 방 정보를 가져올 수 있습니다. 아무 방에도 입장하지 않은 상태라면 속성은 null
값을 리턴합니다.
방 속성¶
room
속성에는 다음과 같은 필드가 있으며, 아래 표에 나와 있는 게터(getter)를 이용하여 읽을 수 있습니다.
이름 |
타입 |
설명 |
게터 |
---|---|---|---|
name |
string |
방장이 방에 부여한 이름. |
GetName() |
capacity |
int |
방이 현재 수용할 수 있는 멤버의 최대 수.
확인은 새 클라이언트가 방에 입장하려고 할 때만 합니다.
게임을 하는 과정에서 이 속성이 바뀌고 멤버의 현재 수가 새 값을 초과하면 기존 멤버는 퇴장당하지 않습니다.
|
GetCapacity() |
password |
string |
이 필드는 방 속성을 참조할 때 빈 상태가 됩니다.
설정되면 새 클라이언트는 방에 입장할 때 올바른 비밀번호를 제공해야 합니다.
비밀번호가 맞지 않거나 입력되지 않으면 입장이 거절됩니다.
비워 두면 아무나 방에 입장할 수 있습니다.
|
GetPassword() |
state |
int |
방의 상태. 정수값으로 표시됩니다.
게임 실행자가 각 값이 나타내는 상태를 정의합니다.
|
GetState() |
isJoinable |
bool |
거짓으로 설정하면 새 멤버는 방에 입장할 수 없습니다. |
GetIsJoinable() |
key1-key8 |
double |
커스텀 속성값. |
GetKey1()-GetKey8() |
stringKey |
string |
커스텀 스트링 속성값. |
GetStringKey() |
memberCount |
int |
현재 방 안에 있는 방 멤버의 수. |
GetMemberCount() |
properties |
Dictionary <string, object> |
추가 커스텀 속성값. |
GetProperties() |
방 멤버 속성¶
현재 플레이어¶
네트워크 인스턴스의 selfRoomMember
값에서 다음 속성을 불러올 수 있습니다.
이름 |
타입 |
설명 |
게터 |
---|---|---|---|
uid |
UID |
방 멤버의 고유 식별자. |
GetUid() |
primaryKey |
long |
서버 데이터베이스에 있는 방 멤버의 기본 키 식별자. |
GetPrimaryKey() |
roomId |
long |
이 멤버가 속한 방의 ID. |
GetRoomId() |
name |
string |
방 멤버의 이름. |
GetName() |
properties |
Dictionary <string, object> |
추가 커스텀 속성값. |
GetProperties() |
방 멤버 전체¶
네트워크 인스턴스에서 이용할 수 있는 방 멤버는 두 가지입니다.
roomMembers
키가 멤버들의 ID인 딕셔너리.
sortedRoomMembers
방 멤버 전체가 기본 키를 기준으로 분류.
위와 같이 각 방 멤버로부터 동일한 속성을 가져올 수 있습니다.
새 방에 입장하면 StrixNetwork
싱글톤에서 isRoomOwner
속성을 검사하여 방주인인지 확인할 수 있습니다.
참고
위 명시된 필드는 모두 게터뿐 아니라 세터도 있지만 Strix SDK에서만 이용되며, 최종 사용자가 호출해서는 안 됩니다. 이 필드를 설정하면 로컬에서만 적용됩니다.
코드 예시¶
using SoftGear.Strix.Unity.Runtime;
using UnityEngine;
class GettingRoomInfoSample : MonoBehaviour
{
void Start()
{
var strixNetwork = StrixNetwork.instance;
// 플레이스홀더 값. 이것을 실제 애플리케이션 ID로 변경
// Strix Cloud 애플리케이션 정보에서 확인 가능: https://www.strixcloud.net/app/applist
strixNetwork.applicationId = "00000000-0000-0000-0000-000000000000";
// 먼저 마스터 서버로 연결
strixNetwork.ConnectMasterServer(
// 플레이스홀더 값. 이것을 실제 마스터 호스트 이름으로 변경
// Strix Cloud 애플리케이션 정보에서 확인 가능: https://www.strixcloud.net/app/applist
host: "000000000000000000000000.game.strixcloud.net",
connectEventHandler: _ => {
Debug.Log("Connection established.");
// 마스터 서버로 연결한 후에는 방 만들기 가능
strixNetwork.CreateRoom(
roomProperties: new RoomProperties
{
name = "Athens",
password = "66e3f2nk",
capacity = 20,
key1 = 3.2,
state = 12,
stringKey = "Tokyo"
},
memberProperties: new RoomMemberProperties
{
name = "Artemis"
},
handler: createRoomResult => {
var room = strixNetwork.room;
Debug.Log(
"Room name: " + room.GetName() // 방 이름은 그것을 만들 때 설정한 것, 즉 Athens와 같아야 함
+ "\nRoom capacity: " + room.GetCapacity() // 용량은 20으로 해야 함
+ "\nRoom password: " + room.GetPassword() // 비밀번호를 설정했지만 읽을 수 없으므로 비워둬야 함
+ "\nRoom state: " + room.GetState() // 앞서 설정한 상태. 12가 되어야 함
+ "\nRoom is joinable: " + room.GetIsJoinable() // 방을 만들 때 지정하지 않았기 때문에 기본으로 입장이 가능해야 함
+ "\nRoom's key1: " + room.GetKey1() // 앞서 설정한 키. 3.2가 되어야 함
+ "\nRoom's string key: " + room.GetStringKey() // 앞서 설정한 이 스트링 키. "Tokyo"가 되어야 함
+ "\nRoom's member count: " + room.GetMemberCount() // 멤버가 우리뿐이므로 1이 되어야 함
);
var roomMember = strixNetwork.selfRoomMember;
Debug.Log(
"Room member name: " + roomMember.GetName() // 멤버 이름은 그것을 만들 때 설정한 것, 즉 Artemis와 같아야 함
);
},
failureHandler: createRoomError => Debug.LogError("Could not create room. Reason: " + createRoomError.cause)
);
},
errorEventHandler: connectError => Debug.LogError("Connection failed. Reason: " + connectError.cause)
);
}
}
참고
applicationId
와 host
의 플레이스홀더 값은 Strix Cloud 애플리케이션 정보 탭에서 볼 수 있는 실제값으로 바꿔야 합니다.