Config Caching
Understand how Economy caches configurations to ensure consistency across player devices.
읽는 시간 1분최근 업데이트: 5일 전
Remote Config와 Game Overrides는 구성 할당 해시를 활용하여 플레이어 구성을 캐시합니다. Economy 서비스는 몇 시간 동안 구성 할당 해시를 캐시하여 불필요한 네트워크 호출을 방지합니다.
구성 할당 해시
구성 할당 해시는 무엇인가요?
ConfigAssignmentHash는 Remote Config, Game Overrides, Economy 프로젝트 구성에 있는 플레이어 데이터의 스냅샷에 대한 고유 ID입니다. 특히 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();
Pitfalls
캐시된 구성 할당 해시로 인해 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; }};
예외
구성 할당 해시를 표시할 수 없음을 알려 주는EconomyExceptionEconomyExceptionReason.ConfigAssignmentHashInvalidReasonConfigurationGetCurrenciesAsync()