GS2-Grade SDK for Game Engine API リファレンス
モデル
EzStatus
ステータス
ステータスとはプロパティID毎に存在するエンティティで、
現在のグレードの値を保持します。
プロパティID とはステータス固有のIDで、開発者が任意の値を設定できます。
連動する GS2-Experience のプロパティIDと完全に一致する値を使用することを強く推奨しています。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| gradeName | string | ✓ | ~ 128文字 | グレードモデル名 このステータスが属するグレードモデルの名前です。グレードエントリのマッピング、連動する経験値モデル、報酬加算テーブルを含むグレードモデル定義を参照します。 | ||
| propertyId | string | ✓ | ~ 1024文字 | プロパティID このグレードステータスの開発者定義の識別子で、ユーザーとグレードモデル内で一意です。連動する GS2-Experience ステータスのプロパティIDと同じ値を使用することを強く推奨します。これにより、グレード値とランクキャップの正しい同期が保証されます。 | ||
| gradeValue | long | 1 | 1 ~ 9223372036854775805 | 現在のグレード このステータスの現在のグレード値です。連動する GS2-Experience モデルのランクキャップを決定するために、グレードモデルのグレードエントリ配列のインデックスとして使用されます。この値が変更されると、関連する経験値ステータスのランクキャップが対応するグレードエントリで定義された値に自動更新されます。 |
EzGradeModel
グレードモデル
グレードモデルとは、キャラクターや装備のランクを示すエンティティで、グレードによって GS2-Experience のランクキャップを設定することができます。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| name | string | ✓ | ~ 128文字 | グレードモデル名 グレードモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| metadata | string | ~ 2048文字 | メタデータ メタデータには任意の値を設定できます。 これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。 | |||
| experienceModelId | string | ✓ | ~ 1024文字 | GS2-Experience 経験値モデル
GRN このグレードモデルと連動させる GS2-Experience の経験値モデルの GRN です。グレード値が変更されると、グレードエントリのマッピングに基づいて連動する経験値モデルのランクキャップが自動的に更新されます。これにより、高いグレードが高いランクキャップを解放するグレード駆動の成長が実現できます。 | ||
| gradeEntries | List<EzGradeEntryModel> | ✓ | 1 ~ 100 items | グレードエントリーモデルリスト 各グレード値を連動する GS2-Experience モデルのランクキャップにマッピングするグレードエントリの順序付きリストです。配列のインデックスがグレード値に対応し、最初のエントリ(インデックス 0)がグレード 0 のランクキャップを、2番目がグレード 1 を定義します。 | ||
| acquireActionRates | List<EzAcquireActionRate> | 0 ~ 100 items | 報酬加算テーブルリスト グレードに基づいて報酬量をスケーリングするための名前付き倍率テーブルのコレクションです。複数のテーブルを定義して、異なる種類の報酬(例: 経験値、通貨、アイテム)に異なるスケーリングルールを適用できます。 |
EzGradeEntryModel
グレードエントリーモデル
グレード値と連動する GS2-Experience モデルのランクキャップのマッピングを定義します。各エントリはプロパティIDのマッチングに使用する正規表現パターンも指定し、グレードアップ操作に使用できるリソースとそのプロパティIDの変換方法を決定します。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| metadata | string | ~ 2048文字 | メタデータ メタデータには任意の値を設定できます。 これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。 | |||
| rankCapValue | long | ✓ | 0 ~ 9223372036854775805 | ランクキャップ値 このグレードが適用された際に連動する GS2-Experience モデルに設定するランクキャップ値です。プレイヤーのグレードがこのエントリに対応する値に変更されると、関連する経験値ステータスのランクキャップがこの値に自動更新され、到達可能な最大ランクが制御されます。 |
EzAcquireAction
入手アクション
EzAcquireActionRate
報酬加算テーブル
現在のグレード値に基づいて報酬量をスケーリングする名前付き倍率テーブルを定義します。各グレード値は入手アクションに適用される倍率にマッピングされ、高いグレードのキャラクターや装備がより多くの報酬を受け取れるようになります。標準的な倍精度浮動小数点数モードと、非常に大きな値に対応するビッグナンバーモードの両方をサポートします。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| name | string | ✓ | ~ 128文字 | 報酬加算テーブル名 グレードモデル内でこの倍率テーブルを一意に識別する名前です。トランザクションの特定の入手アクションにグレードベースの報酬スケーリングを適用する際に参照されます。 | ||||||||
| mode | 文字列列挙型 enum { “double”, “big” } | “double” | 報酬加算テーブルの種類 倍率値の数値精度モードを選択します。“double” モードはほとんどのケースに適した標準的な浮動小数点数を使用します。“big” モードは最大1024桁までの文字列表現の数値を使用し、非常に大きな値の計算を必要とするゲームに対応します。
| |||||||||
| rates | List<double> | {mode} == “double” | ✓※ | 1 ~ 1000 items | グレードごとの倍率リスト(double モード) グレード値でインデックスされた報酬倍率の配列で、倍精度浮動小数点数を使用します。インデックス 0 のエントリがグレード 0 の倍率、インデックス 1 がグレード 1 の倍率となります。mode が “double” に設定されている場合に使用されます。 ※ mode が “double” であれば 必須 | |||||||
| bigRates | List<string> | {mode} == “big” | ✓※ | 1 ~ 1000 items | グレードごとの倍率リスト(big モード) グレード値でインデックスされた報酬倍率の配列で、拡張精度のために文字列表現の数値を使用します。インデックス 0 のエントリがグレード 0 の倍率、インデックス 1 がグレード 1 の倍率となります。非常に大きな数値計算を必要とするゲーム向けに、mode が “big” に設定されている場合に使用されます。 ※ mode が “big” であれば 必須 |
EzVerifyActionResult
検証アクションの実行結果
EzConsumeActionResult
消費アクションの実行結果
EzAcquireActionResult
入手アクションの実行結果
EzTransactionResult
トランザクション実行結果
サーバーサイドでのトランザクションの自動実行機能を利用して実行されたトランザクションの実行結果
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| transactionId | string | ✓ | 36 ~ 36文字 | トランザクションID | ||
| verifyResults | List<EzVerifyActionResult> | 0 ~ 10 items | 検証アクションの実行結果リスト | |||
| consumeResults | List<EzConsumeActionResult> | [] | 0 ~ 10 items | 消費アクションの実行結果リスト | ||
| acquireResults | List<EzAcquireActionResult> | [] | 0 ~ 100 items | 入手アクションの実行結果リスト |
メソッド
getGradeModel
名前を指定して限界突破・覚醒モデルを取得する
名前を指定して、グレードモデルを1件取得します。
取得できる情報には、グレードエントリ(各グレードで最大レベルがどう変わるかの定義)、デフォルトの初期グレード、報酬倍率レートが含まれます。
特定の限界突破システムの詳細を表示する際に使います。たとえば「鉄の剣: グレード2 → 最大Lv 70、グレード3 → 最大Lv 80」や「現在の報酬ボーナス: x1.5」のように表示するのに便利です。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| gradeName | string | ✓ | ~ 128文字 | グレードモデル名 グレードモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
Result
| 型 | 説明 | |
|---|---|---|
| item | EzGradeModel | グレードモデル |
実装例
var domain = gs2.Grade.Namespace(
namespaceName: "namespace-0001"
).GradeModel(
gradeName: "grade-0001"
);
var item = await domain.ModelAsync(); var domain = gs2.Grade.Namespace(
namespaceName: "namespace-0001"
).GradeModel(
gradeName: "grade-0001"
);
var future = domain.ModelFuture();
yield return future;
var item = future.Result; const auto Domain = Gs2->Grade->Namespace(
"namespace-0001" // namespaceName
)->GradeModel(
"grade-0001" // gradeName
);
const auto Future = Domain->Model();
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}値の変更イベントハンドリング
var domain = gs2.Grade.Namespace(
namespaceName: "namespace-0001"
).GradeModel(
gradeName: "grade-0001"
);
// イベントハンドリングを開始
var callbackId = domain.Subscribe(
value => {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
domain.Unsubscribe(callbackId); var domain = gs2.Grade.Namespace(
namespaceName: "namespace-0001"
).GradeModel(
gradeName: "grade-0001"
);
// イベントハンドリングを開始
var callbackId = domain.Subscribe(
value => {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
domain.Unsubscribe(callbackId); const auto Domain = Gs2->Grade->Namespace(
"namespace-0001" // namespaceName
)->GradeModel(
"grade-0001" // gradeName
);
// イベントハンドリングを開始
const auto CallbackId = Domain->Subscribe(
[](TSharedPtr<Gs2::Grade::Model::FGradeModel> value) {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
Domain->Unsubscribe(CallbackId);Warning
このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。
ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。
そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
listGradeModels
限界突破・覚醒モデルの一覧を取得する
このネームスペースに登録されているすべてのグレードモデルを取得します。
グレードモデルは「限界突破」や「覚醒」の仕組みを定義します。プレイヤーがグレードを上げることで、アイテムやキャラクターの最大レベル(ランクキャップ)がどれだけ上がるかを制御します。
たとえば、グレード0の武器は最大レベル50ですが、限界突破してグレード1にすると最大レベルが60に、グレード2で70に…と上がっていきます。
報酬倍率レートも定義でき、グレードレベルに応じて報酬量を増やせます(例: グレード3のキャラクターはゴールド獲得量1.5倍)。
限界突破・覚醒のUIを構築するのに使います。たとえば「グレード 2/5 — 最大Lv: 70 — 次回: 同キャラ3体必要」のような表示に便利です。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
Result
| 型 | 説明 | |
|---|---|---|
| items | List<EzGradeModel> | グレードモデルリスト |
実装例
var domain = gs2.Grade.Namespace(
namespaceName: "namespace-0001"
);
var items = await domain.GradeModelsAsync(
).ToListAsync(); var domain = gs2.Grade.Namespace(
namespaceName: "namespace-0001"
);
var it = domain.GradeModels(
);
List<EzGradeModel> items = new List<EzGradeModel>();
while (it.HasNext())
{
yield return it.Next();
if (it.Error != null)
{
onError.Invoke(it.Error, null);
break;
}
if (it.Current != null)
{
items.Add(it.Current);
}
else
{
break;
}
} const auto Domain = Gs2->Grade->Namespace(
"namespace-0001" // namespaceName
);
const auto It = Domain->GradeModels(
);
TArray<Gs2::UE5::Grade::Model::FEzGradeModelPtr> Result;
for (auto Item : *It)
{
if (Item.IsError())
{
return false;
}
Result.Add(Item.Current());
}値の変更イベントハンドリング
var domain = gs2.Grade.Namespace(
namespaceName: "namespace-0001"
);
// イベントハンドリングを開始
var callbackId = domain.SubscribeGradeModels(
() => {
// リストの要素が変化した時に呼び出される
}
);
// イベントハンドリングを停止
domain.UnsubscribeGradeModels(callbackId); var domain = gs2.Grade.Namespace(
namespaceName: "namespace-0001"
);
// イベントハンドリングを開始
var callbackId = domain.SubscribeGradeModels(
() => {
// リストの要素が変化した時に呼び出される
}
);
// イベントハンドリングを停止
domain.UnsubscribeGradeModels(callbackId); const auto Domain = Gs2->Grade->Namespace(
"namespace-0001" // namespaceName
);
// イベントハンドリングを開始
const auto CallbackId = Domain->SubscribeGradeModels(
[]() {
// リストの要素が変化した時に呼び出される
}
);
// イベントハンドリングを停止
Domain->UnsubscribeGradeModels(CallbackId);Warning
このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。
ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。
そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
applyRankCap
現在の限界突破グレードに合わせて最大レベルを同期する
GS2-Experience の最大レベル(ランクキャップ)を現在のグレード(限界突破レベル)に合わせて更新します。
たとえば、キャラクターがグレード2(最大Lv 70)からグレード3(最大Lv 80)に限界突破された場合、これを呼ぶとExperienceシステムに新しい最大レベルが80であることが反映されます。
グレードが外部で変更されて、Experienceの最大レベルと同期する必要がある場合に便利です。
通常、グレード変更時に最大レベルは自動更新されますが、データがずれた場合に手動で呼び出すこともできます。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| gradeName | string | ✓ | ~ 128文字 | グレードモデル名 このステータスが属するグレードモデルの名前です。グレードエントリのマッピング、連動する経験値モデル、報酬加算テーブルを含むグレードモデル定義を参照します。 | ||
| gameSession | GameSession | ✓ | GameSession | |||
| propertyId | string | ✓ | ~ 1024文字 | プロパティID このグレードステータスの開発者定義の識別子で、ユーザーとグレードモデル内で一意です。連動する GS2-Experience ステータスのプロパティIDと同じ値を使用することを強く推奨します。これにより、グレード値とランクキャップの正しい同期が保証されます。 |
Result
| 型 | 説明 | |
|---|---|---|
| item | EzStatus | ステータス |
| experienceNamespaceName | string | GS2-Experience ネームスペース名 |
| experienceStatus | EzStatus | ランクキャップ更新後の GS2-Experience ステータス |
実装例
var domain = gs2.Grade.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Status(
gradeName: "grade-0001",
propertyId: "property-0001"
);
var result = await domain.ApplyRankCapAsync(
);
var item = await result.ModelAsync();
var experienceNamespaceName = result.ExperienceNamespaceName; var domain = gs2.Grade.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Status(
gradeName: "grade-0001",
propertyId: "property-0001"
);
var future = domain.ApplyRankCapFuture(
);
yield return future;
if (future.Error != null)
{
onError.Invoke(future.Error, null);
yield break;
}
var future2 = future.Result.ModelFuture();
yield return future2;
if (future2.Error != null)
{
onError.Invoke(future2.Error, null);
yield break;
}
var result = future2.Result;
var experienceNamespaceName = future.Result.ExperienceNamespaceName; const auto Domain = Gs2->Grade->Namespace(
"namespace-0001" // namespaceName
)->Me(
GameSession
)->Status(
"grade-0001", // gradeName
"property-0001" // propertyId
);
const auto Future = Domain->ApplyRankCap(
);
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
// obtain changed values / result values
const auto Future2 = Future->GetTask().Result()->Model();
Future2->StartSynchronousTask();
if (Future2->GetTask().IsError())
{
return Future2->GetTask().Error();
}
const auto Result = Future2->GetTask().Result();
const auto ExperienceNamespaceName = Result->ExperienceNamespaceName;getStatus
特定のアイテムやキャラクターの限界突破・覚醒ステータスを取得する
プレイヤーが所持する特定のプロパティの現在のグレード(限界突破レベル)を取得します。
プロパティはグレードモデル名(どの限界突破システムを使うか)とプロパティID(どのアイテムやキャラクターか)で識別します。
限界突破の詳細画面を表示する際に使います。たとえば「鉄の剣 — グレード: ★3 — 最大Lv: 80 — 次の限界突破にはあと2体必要」のように表示するのに便利です。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| gradeName | string | ✓ | ~ 128文字 | グレードモデル名 このステータスが属するグレードモデルの名前です。グレードエントリのマッピング、連動する経験値モデル、報酬加算テーブルを含むグレードモデル定義を参照します。 | ||
| gameSession | GameSession | ✓ | GameSession | |||
| propertyId | string | ✓ | ~ 1024文字 | プロパティID このグレードステータスの開発者定義の識別子で、ユーザーとグレードモデル内で一意です。連動する GS2-Experience ステータスのプロパティIDと同じ値を使用することを強く推奨します。これにより、グレード値とランクキャップの正しい同期が保証されます。 |
Result
| 型 | 説明 | |
|---|---|---|
| item | EzStatus | ステータス |
実装例
var domain = gs2.Grade.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Status(
gradeName: "grade-0001",
propertyId: "property-0001"
);
var item = await domain.ModelAsync(); var domain = gs2.Grade.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Status(
gradeName: "grade-0001",
propertyId: "property-0001"
);
var future = domain.ModelFuture();
yield return future;
var item = future.Result; const auto Domain = Gs2->Grade->Namespace(
"namespace-0001" // namespaceName
)->Me(
GameSession
)->Status(
"grade-0001", // gradeName
"property-0001" // propertyId
);
const auto Future = Domain->Model();
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}値の変更イベントハンドリング
var domain = gs2.Grade.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Status(
gradeName: "grade-0001",
propertyId: "property-0001"
);
// イベントハンドリングを開始
var callbackId = domain.Subscribe(
value => {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
domain.Unsubscribe(callbackId); var domain = gs2.Grade.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Status(
gradeName: "grade-0001",
propertyId: "property-0001"
);
// イベントハンドリングを開始
var callbackId = domain.Subscribe(
value => {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
domain.Unsubscribe(callbackId); const auto Domain = Gs2->Grade->Namespace(
"namespace-0001" // namespaceName
)->Me(
GameSession
)->Status(
"grade-0001", // gradeName
"property-0001" // propertyId
);
// イベントハンドリングを開始
const auto CallbackId = Domain->Subscribe(
[](TSharedPtr<Gs2::Grade::Model::FStatus> value) {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
Domain->Unsubscribe(CallbackId);Warning
このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。
ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。
そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
listStatuses
プレイヤーの限界突破・覚醒ステータスの一覧を取得する
プレイヤーのアイテムやキャラクターの現在のグレード(限界突破レベル)を取得します。
グレードモデル名でフィルタリングすることもできます。省略するとすべてのグレードタイプのステータスが返されます。
各ステータスには、現在のグレード値とそれがどのプロパティ(アイテムやキャラクター)に属するかが含まれます。
限界突破済みアイテムの一覧を表示するのに使います。たとえば「鉄の剣 ★3、炎の杖 ★1、竜の鎧 ★5」のような表示に便利です。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| gradeName | string | ~ 128文字 | グレードモデル名 | |||
| gameSession | GameSession | ✓ | GameSession | |||
| pageToken | string | ~ 1024文字 | データの取得を開始する位置を指定するトークン | |||
| limit | int | 30 | 1 ~ 1000 | データの取得件数 |
Result
| 型 | 説明 | |
|---|---|---|
| items | List<EzStatus> | ステータスのリスト |
| nextPageToken | string | リストの続きを取得するためのページトークン |
実装例
var domain = gs2.Grade.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
var items = await domain.StatusesAsync(
gradeName: "grade-0001"
).ToListAsync(); var domain = gs2.Grade.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
var it = domain.Statuses(
gradeName: "grade-0001"
);
List<EzStatus> items = new List<EzStatus>();
while (it.HasNext())
{
yield return it.Next();
if (it.Error != null)
{
onError.Invoke(it.Error, null);
break;
}
if (it.Current != null)
{
items.Add(it.Current);
}
else
{
break;
}
} const auto Domain = Gs2->Grade->Namespace(
"namespace-0001" // namespaceName
)->Me(
GameSession
);
const auto It = Domain->Statuses(
"grade-0001" // gradeName
);
TArray<Gs2::UE5::Grade::Model::FEzStatusPtr> Result;
for (auto Item : *It)
{
if (Item.IsError())
{
return false;
}
Result.Add(Item.Current());
}値の変更イベントハンドリング
var domain = gs2.Grade.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
// イベントハンドリングを開始
var callbackId = domain.SubscribeStatuses(
() => {
// リストの要素が変化した時に呼び出される
}
);
// イベントハンドリングを停止
domain.UnsubscribeStatuses(callbackId); var domain = gs2.Grade.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
// イベントハンドリングを開始
var callbackId = domain.SubscribeStatuses(
() => {
// リストの要素が変化した時に呼び出される
}
);
// イベントハンドリングを停止
domain.UnsubscribeStatuses(callbackId); const auto Domain = Gs2->Grade->Namespace(
"namespace-0001" // namespaceName
)->Me(
GameSession
);
// イベントハンドリングを開始
const auto CallbackId = Domain->SubscribeStatuses(
[]() {
// リストの要素が変化した時に呼び出される
}
);
// イベントハンドリングを停止
Domain->UnsubscribeStatuses(CallbackId);Warning
このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。
ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。
そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。