設定のキャッシュ
Understand how Economy caches configurations to ensure consistency across player devices.
読み終わるまでの所要時間 2 分最終更新 8日前
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
プレイヤーの現在の設定割り当てハッシュを文字列として取得します。存在しない場合はnullEconomyService.Instance.Configuration.GetConfigAssignmentHash();
SyncConfigurationAsync
認証済みプレイヤーの最新設定をフェッチし、将来の Economy API 呼び出しのために設定割り当てハッシュを保存します。このメソッドを呼び出してから他の Economy 呼び出しを行うことを推奨します。こうすることで、正しい設定割り当てハッシュが確実に使用されます。EconomyService.Instance.Configuration.SyncConfigurationAsync();
注意事項
キャッシュされた設定割り当てハッシュのために Economy の変更が反映されない
Economy プロジェクト設定または Game Overrides に変更を加えても、Cloud Code の実行と Economy SDK 呼び出しの両方は、最後にキャッシュされた設定割り当てハッシュを使用し続けます。 この問題を回避するには、API 呼び出しを行う前に、最新の設定割り当てハッシュをフェッチするよにしてください。 Cloud Code の場合は、スクリプトまたはスクリプト内の API 呼び出しに、最新の設定割り当てハッシュをパラメーターとして渡すことを推奨します。 また、Cloud Code スクリプトの開始時に最新設定割り当てハッシュをフェッチして、スクリプト内の API 呼び出しに渡すこともできます。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; }};
例外
設定割り当てハッシュが見つからないことを示すEconomyExceptionReasonEconomyExceptionReason.ConfigAssignmentHashInvalidConfigurationGetCurrenciesAsync()