設定のキャッシュ
Remote Config および Game Overrides は、設定割り当てハッシュを利用してプレイヤー設定をキャッシュします。Economy サービスは、不必要なネットワーク呼び出しを回避するために、設定割り当てハッシュを長時間キャッシュします。
設定割り当てハッシュ
設定割り当てハッシュとは何か
ConfigAssignmentHash は、Remote Config、Game Overrides および Economy プロジェクト設定における、プレイヤーのデータのスナップショットの一意識別子です。
特に Economy では、スナップショットは Economy プロジェクト設定 (アイテム定義、通貨定義など) のみを対象とし、プレイヤーの残高やインベントリは含まれません。
Cloud Code および Economy SDK での設定キャッシュ
Economy Cloud Code SDK および C# SDK で設定割り当てハッシュを使用する方法の詳細については、Game Overrides - Cloud Code および Game Overrides - Economy を参照してください。
設定割り当てハッシュへのアクセス
ある時点で、他の Unity サービスで使用するために、プレイヤーの現在の設定割り当てハッシュを取得する場合があります。ハッシュは Configuration 名前空間から取得できます。
GetConfigAssignmentHash
プレイヤーの現在の設定割り当てハッシュを文字列として取得します。存在しない場合は null
を返します。
C#
EconomyService.Instance.Configuration.GetConfigAssignmentHash();
SyncConfigurationAsync
認証済みプレイヤーの最新設定をフェッチし、将来の Economy API 呼び出しのために設定割り当てハッシュを保存します。このメソッドを呼び出してから他の Economy 呼び出しを行うことを推奨します。こうすることで、正しい設定割り当てハッシュが確実に使用されます。
C#
EconomyService.Instance.Configuration.SyncConfigurationAsync();
注意事項
キャッシュされた設定割り当てハッシュのために Economy の変更が反映されない
Economy プロジェクト設定または Game Overrides に変更を加えても、Cloud Code の実行と Economy SDK 呼び出しの両方は、最後にキャッシュされた設定割り当てハッシュを使用し続けます。
この問題を回避するには、API 呼び出しを行う前に、最新の設定割り当てハッシュをフェッチするよにしてください。
Cloud Code の場合は、スクリプトまたはスクリプト内の API 呼び出しに、最新の設定割り当てハッシュをパラメーターとして渡すことを推奨します。
また、Cloud Code スクリプトの開始時に最新設定割り当てハッシュをフェッチして、スクリプト内の API 呼び出しに渡すこともできます。
Cloud Code JS 例
const { CurrenciesApi, ConfigurationApi } = require("@unity-services/economy-2.4");
module.exports = async ({ params, context, logger }) => {
const currenciesApi = new CurrenciesApi({ accessToken: context.accessToken });
const configApi = new ConfigurationApi({ accessToken: context.accessToken });
const currencyId = "COIN";
try {
// Retrieve the player config to get the configAssignmentHash.
// This is needed to ensure the currency is synced
var config = await configApi.getPlayerConfiguration({
playerId: context.playerId,
projectId: context.projectId,
});
const result = await currenciesApi.incrementPlayerCurrencyBalance({
currencyId,
playerId: context.playerId,
projectId: context.projectId,
configAssignmentHash: config.data.metadata.configAssignmentHash,
currencyModifyBalanceRequest: { amount: 10 },
});
return result.data;
} catch (err) {
logger.error("Failed to increment currency for player", { "error.message": err.message });
return;
}
};
例外
設定割り当てハッシュが見つからないことを示す EconomyException
が発生することがあります。
この例外の Reason
は EconomyExceptionReason.ConfigAssignmentHashInvalid
です。
これを解決するには、Configuration
メソッド (例えば GetCurrenciesAsync()
) のどれかを使用して再び Economy 設定をフェッチします。こうすると、更新された設定割り当てハッシュを SDK が取得でき、通常どおり呼び出しを行えるようになります。