방 멤버 정보 업데이트¶
클라이언트가 방에 입장하면 언제든지 방 멤버의 속성을 변경할 수 있습니다. 방 멤버를 대표하는 클라이언트만 속성을 변경할 수 있습니다. 즉, 방장조차도 다른 멤버의 정보를 변경할 권한은 없다는 뜻입니다.
방법은 StrixNetwork
싱글톤에서 다음 메서드 중 하나를 호출하면 됩니다.
void SetRoomMember(long memberId, RoomMemberProperties memberProperties, RoomMemberSetEventHandler handler, FailureEventHandler failureHandler, RequestConfig config = null)
void SetRoomMember(long memberId, IDictionary<string, object> memberProperties, RoomMemberSetEventHandler handler, FailureEventHandler failureHandler, RequestConfig config = null)
스트링 키 딕셔너리로 수정 저장된 속성에 대해 새 값이 생기면, 두 번째 오버로드가 제공됩니다.
코드 예시¶
using SoftGear.Strix.Unity.Runtime;
using UnityEngine;
public class StrixSetRoomMemberTest : 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 = "Wildwood",
password = "66e3f2nk", // 이 방에는 비밀번호가 설정되어 있어 비밀번호가 없는 클라이언트는 입장 불가
capacity = 20 // 방이 수용할 수 있는 클라이언트 최대수
},
memberProperties: new RoomMemberProperties {
name = "Artemis" // 이것이 플레이어 이름이 됨
},
handler: createRoomResult => {
Debug.Log("Room created. Current member name: " + strixNetwork.selfRoomMember.GetName());
// 이제 방이 만들어졌으니 플레이어의 이름을 바꿔 봅시다
strixNetwork.SetRoomMember(
memberId: strixNetwork.selfRoomMember.GetPrimaryKey(), // 플레이어의 ID
memberProperties: new RoomMemberProperties {
name = "Marianne" // 이름을 Artemis에서 Marianne로 변경
},
handler: setRoomMemberResult => Debug.Log("Member name changed. Current name: " + strixNetwork.selfRoomMember.GetName()), // 새로운 이름 인쇄
failureHandler: setRoomMemberError => Debug.LogError("SetRoomMember failed. Reason: " + setRoomMemberError.cause)
);
},
failureHandler: createRoomError => Debug.LogError("Could not create room. Reason: " + createRoomError.cause)
);
},
errorEventHandler: connectError => Debug.LogError("Connection failed. Reason: " + connectError.cause)
);
}
}
참고
applicationId
와 host
의 플레이스홀더 값은 Strix Cloud 애플리케이션 정보 탭에서 볼 수 있는 실제값으로 바꿔야 합니다.