ルームとルームメンバーの情報を取得¶
StrixNetworkシングルトンのroomプロパティを使用して、現在のルーム情報を取得できます。どのルームにも参加していない場合、このプロパティはnullを返します。
ルームのプロパティ¶
roomプロパティには、次の示すフィールドがあり、表に示したゲッターを使用して読み取ることができます。
| 名前 | 型 | 説明 | ゲッター | 
|---|---|---|---|
| name | string | ルームオーナーがルームに付けた名前です。 | GetName() | 
| capacity | int | ルームが現在保持できるメンバーの最大数です。 このチェックは、新しいクライアントがルームに参加しようとしたときにのみ実行されます。 ゲーム中にこのプロパティが変更されて現在のメンバー数が新しい値を超えても、既存のメンバーはキックされません。 | GetCapacity() | 
| password | string | ルームプロパティの参照時には、このフィールドは空になります。 設定した場合、新しくルームに参加するクライアントは一致するパスワードを提示する必要があります。 パスワードが一致しないか提供されなかった場合は、そのクライアントは拒否されます。 空に設定した場合、誰でもルームに参加できます。 | GetPassword() | 
| state | int | ルームの状態であり、整数値で表されます。 個々の値が表す具体的な状態は、ゲームの実装者が定義します。 | GetState() | 
| isJoinable | bool | falseに設定すると、新しいメンバーはルームに参加できません。 | 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() | 
全てのルームメンバー¶
ネットワークインスタンスで利用可能なルームメンバーのコレクションが2つあります。
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のアプリケーション情報タブにある実際の値に変更してください。