パッケージなしの非消費型アイテムを使用する方法
非消耗品は、クライアントにダウンロードされているパッケージを使用しても使用しなくても構成できます。 パッケージのない非消耗品は、構成および使用が簡単になります。 通常、これらの種類の非消耗品は、既に基本ゲームに含まれているコンテンツへのゲートアクセスに通常使用されます。 多くのゲームは、ライセンスを受けていない場合でも、マルチプレイヤーのアセットを使用するためやプレビューを行うために、基本のゲーム パッケージにアドオンのコンテンツを含めることを選択します。
注意
パッケージなしの非消費型アイテムはディスクではサポートされていません。
ダウンロード可能なパッケージがない場合でも、これらの製品の種類は、「ゲームの製品共有モデル」に従ってライセンスを提供します。
XStoreQueryEntitledProductsAsync を使用して、単に所有権を確認するだけでは十分ではありません。そのため、購入者にはアクセス権が付与されるだけです。 代わりに、XStoreAcquireLicenseForDurablesAsync を使用して非消耗品アイテムへのアクセスを適切に確認します:
void AcquireLicenseForDurable(const char* storeId)
{
auto async = new XAsyncBlock{};
async->queue = m_asyncQueue;
async->callback = [](XAsyncBlock* async)
{
XStoreLicenseHandle result = {};
HRESULT hr = XStoreAcquireLicenseForDurablesResult(
async,
&result);
if (SUCCEEDED(hr))
{
bool isValid = XStoreIsLicenseValid(result);
printf("Is valid license: %s\n", isValid? "yes" : "no");
}
else
{
printf("Error calling XStoreAcquireLicenseForDurablesResult: 0x%x\n", hr);
}
delete async;
};
HRESULT hr = XStoreAcquireLicenseForDurablesAsync(
m_xStoreContext,
storeId,
async);
if (FAILED(hr))
{
delete async;
return;
}
}