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