実際にルームに参加せずにルームの情報を取得する方法

ルーム情報を取得するには、いくつか方法があります。

一つの方法は、SearchJoinableRoom()メソッドを使用することです。例えば、次のコードは最初の10個のRoomInfoのコレクションを返します。

StrixNetwork.instance.SearchJoinableRoom(100, 0,
    args => {
        foreach (var roomInfo in args.roomInfoCollection) {
            Debug.Log(String.Format("Room {0}, {1}", roomInfo.roomId, roomInfo.name));
        }
    },
    args => {
        Debug.Log("SearchJoinableRoom failed. error = " + args.cause);
    }
);

ここでargs.roomInfoCollectionはRoomInfoインスタンスのコレクションです。RoomInfoクラスには次のフィールドがあります。

フィールド名

id

long

roomId

long

name

string

protocol

string

port

int

host

string

isJoinable

bool

isPasswordProtected

bool

properties

IDictionary <string, object>

state

int

memberCount

int

capacity

int

nodeUid

UID

nodeType

int

nodeProperties

IDictionary <string, object>

stringKey

string

key1

double

key2

double

key3

double

key4

double

key5

double

key6

double

key7

double

key8

double

もう一つの方法はGetNodeRoom()メソッドを使用することです。これは、主キーを用いて特定のルームに関する情報を返します。CustomizableMatchNodeClientクラスのメソッドです。次のコードをご覧ください。

StrixNetwork.instance.masterSession.nodeClient.GetNodeRoom(
    new GetMessage<CustomizableMatchServerNodeRoom>(roomInfo.roomId),
    args => {
        var room = args.Result.GetModel();
        Debug.Log(String.Format("Room {0}, {1}", room.GetPrimaryKey(), room.GetName()));
    },
    args => {
        Debug.Log("GetNodeRoom failed. error = " + args.Result.ToString());
    }
);

GetNodeRoom()は、CustomizableMatchServerNodeRoomのインスタンスを返します。このクラスはRoomInfoクラスと同様の情報を提供しますが、情報を取得するためにクラスのプロパティの代わりにメソッドを使用します。

GetMembers()関数は、ルーム自体に参加することなく、目的のルームのメンバー一覧を返すことができます。

StrixNetwork.instance.roomSession.roomClient.GetMembers(
    new RoomGetMembersMessage<CustomizableMatchRoom>(roomInfo.roomId),
    args => {
        foreach (var member in args.Result.GetMemberCollection()) {
            Debug.Log(String.Format("Member {0}, {1}", member.GetPrimaryKey(), member.GetName()));
        }
    },
    args => {
        Debug.Log("GetRoomMembers failed. error = " + args.Result.ToString());
    }
);

ここでGetMembers()は、CustomizableMatchRoomMemberのインスタンスを格納するICollectionのインスタンスを返します。