ルームとルームメンバーの情報を取得

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)
        );
    }
}

注釈

applicationIdhostの仮の値を、忘れずにStrix Cloudのアプリケーション情報タブにある実際の値に変更してください。