방 멤버 정보 업데이트

클라이언트가 방에 입장하면 언제든지 방 멤버의 속성을 변경할 수 있습니다. 방 멤버를 대표하는 클라이언트만 속성을 변경할 수 있습니다. 즉, 방장조차도 다른 멤버의 정보를 변경할 권한은 없다는 뜻입니다.

방법은 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)
        );
    }
}

참고

applicationIdhost의 플레이스홀더 값은 Strix Cloud 애플리케이션 정보 탭에서 볼 수 있는 실제값으로 바꿔야 합니다.