ルームメンバー情報の更新

クライアントがルームに参加すると、ルームメンバーのプロパティをいつでも変更できます。ルームメンバーによって表されるクライアントのみがそのプロパティを変更できます。これは、ルームオーナーでさえ、他のメンバーの情報を変更する特権を持っていないことを意味します。

これを行うには、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)

2番目のオーバーロードは、変更するプロパティの新しい値が文字列をキーとするディクショナリとして保存してある場合に便利です。

コード例

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のアプリケーション情報タブにある実際の値に変更してください。