ルームプロパティのコンテナー¶
ルームプロパティで説明した通り、Strixには多数のルームプロパティがあり、またゲームの必要を満たすために独自のカスタムプロパティを定義することもできます。これらのルームプロパティは、ブループリントスクリプト(またはC++コード)で扱う際には、ルームごとにコンテナーにまとまっています。
Strix Unreal SDKにはルームプロパティのコンテナーが何種類かあります。
Strix Property Map構造体¶
Strix Property Map構造体はStrix Unreal SDKの中で最も一般性の高いプロパティのコンテナーであり、ルームプロパティ(や、ルームメンバープロパティのような他のプロパティ)を格納します。これはUEのMapコンテナーに似たものですが、キーは常に文字列(String構造体)でプロパティの名前を表します。値は対応するプロパティの値を表します。UEのMapとは違い、値のデータ型は一定ではなく、Strixのプロパティが取り得るいくつかのデータ型のうちの一つになります。
Strix Property Map構造体には、次に示すデータ型のプロパティ値を格納することができます。
Byte
Boolean
Integer
Float
String
注釈
型がByteである標準のルームプロパティは存在しませんが、Byte型のカスタムプロパティを作成できます。
Strix Property Map構造体は、必要なプロパティ値をSDKに伝えるために頻繁に使用されます。例えば、新しくルームを作成する際にルームプロパティの初期値を指定したり、SetRoom関数でルームプロパティを更新する際に新しい値を指定したりします。Strix Unreal SDKには、Strix Property Map構造体にプロパティ値を設定するために、サポートするデータ型ごとにSet <type> Propertyという関数があります。
一般に、まず(空の)Strix Property Map構造体を作成して必要なプロパティ値を設定し、それを適切なStrixの関数へ渡します。
注釈
この用途にStrix Property Map構造体を使用する場合は、上の例のように、標準プロパティとカスタムプロパティの両方を1つのマップに格納します。標準プロパティは名前(Strix Room構造体のメンバーの名前とは異なります;下記参照)で指定し、値はStrix Unreal SDKが定義したデータ型にします(ルームプロパティ参照)。カスタムプロパティの名前とデータ型はスクリプト作成者が決定します。
Strix Property Mapのもう一つの用途は、Strix Roomのような構造体でのカスタムプロパティの格納先です(これについては後述します)。
Strix Room構造体とStrix NodeRoom構造体¶
Strix Room構造体はルームプロパティ専用のコンテナーです。この構造体には、カスタマイズ可能なものも含めた標準のルームプロパティについて、それに対応するメンバー変数があるので、簡単に使えるでしょう。ただし、ブループリントスクリプト上で表示されるメンバー変数の名前は、プロパティの名前と異なっているので注意してください。例えば、memberCountというプロパティに対応するメンバー変数の名前はMember Countです。(完全な一覧はルームプロパティを参照してください。)
Strix Room構造体は、ルームサーバー上にあるルームのルームプロパティをSDKがブループリントスクリプトに提示するために使用します。そのため、メンバーはどれも読み取り専用です。
注釈
ブループリントグラフエディターでは、「StrixRoom を作成」というブループリントノードが利用できますが、これは一般に有用ではありません。プロパティ値をデフォルト値から変更できないからです。ブループリントスクリプトで「StrixRoom を作成」ノードを使わないでください。
C++コードを使用すると、Strix Room構造体(C++の用語ではstruct FStrixRoom)内のプロパティ値を変更できますが、それを行うことは勧められません。この変更はローカルに保持されるのみであり、変更された値をサーバーや他のクライアントに伝える簡単な方法はありません。
Strix Room構造体にはPropertiesという名前のメンバー変数があります。これはStrix Property Mapで、カスタムプロパティを格納するためのものです。(標準プロパティはPropertiesに格納されません。)
Strix Unreal SDKでは、ここからカスタムプロパティの値を取り出すためにTry Get <type> Property関数を提供しています。Valueピンに取り出したプロパティ値が得られます。
注釈
Try Get <type> PropertyのノードにはResultという出力ピンがあります。これはBoolean値で、Strix Structureピンに渡したStrix Property Map構造体から要求したプロパティ値を取り出すことに成功したかどうかを示します。
(自分自身も含め)どのクライアントもその特定のカスタムプロパティをルームに定義したことがなければ、対応するStrix Property Map構造体にはそのプロパティが含まれていません。その値を取り出そうとするとResultピンがFalseになります。
また、そのプロパティが設定されていたが、値のデータ型がTry Get関数のデータ型と異なっていた場合にも、ResultピンがFalseになり、プロパティ値は取得できません。
一貫性のないデータ型によって起きるバグを避けるために、同じプロパティには常に同じデータ型を使用することをお勧めします。
Strix NodeRoom構造体も、Strix Room構造体と同じように使用できます。