すべてをまとめる - ストアアイテム購入 - (Unreal Engine モジュール)
Last updated on February 4, 2026
注釈:本資料はAI技術を用いて翻訳されています。
UI をアイテム購入に接続する
-
ItemPurchaseWidget_StarterCPP ファイルを開き、NativeOnActivated()関数に移動して、既存の実装を以下のコードに置き換えます。この新しい実装は、ウィジェットがアクティブ化されるとすぐに、前のページで実装したStoreItemPurchaseSubsystem_StarterのレスポンスデリゲートにOnPurchaseComplete()関数をバインドします。void UItemPurchaseWidget_Starter::NativeOnActivated()
{
Super::NativeOnActivated();
W_Parent = GetFirstOccurenceOuter<UStoreItemDetailWidget>();
ensure(W_Parent);
StoreItemDataObject = W_Parent->StoreItemDataObject;
ensure(StoreItemDataObject);
PurchaseSubsystem = GetGameInstance()->GetSubsystem<UStoreItemPurchaseSubsystem_Starter>();
ensure(PurchaseSubsystem);
// ...
// Setup UI
SetupPurchaseButtons(StoreItemDataObject->GetPrices());
Ws_Root->SetWidgetState(EAccelByteWarsWidgetSwitcherState::Not_Empty);
Tb_Success->SetVisibility(ESlateVisibility::Collapsed);
Tb_Error->SetVisibility(ESlateVisibility::Collapsed);
Ss_Amount->SetSelectedIndex(0);
Ss_Amount->OnSelectionChangedDelegate.AddUObject(this, &ThisClass::UpdatePrice);
// Show amount if consumable
Ss_Amount->SetVisibility(StoreItemDataObject->GetIsConsumable() ? ESlateVisibility::Visible : ESlateVisibility::Collapsed);
// Setup delegate
PurchaseSubsystem->OnCheckoutCompleteDelegates.AddUObject(this, &ThisClass::OnPurchaseComplete);
// ...
// Set focus
if (W_PurchaseButtonsOuter->HasAnyChildren())
{
W_PurchaseButtonsOuter->GetChildAt(0)->SetUserFocus(GetOwningPlayer());
}
FTUESetup();
} -
NativeOnDeactivated()関数に移動し、既存の実装を以下のコードに置き換えます。この実装は、ウィジェットが非アクティブ化されたときに何もトリガーされないように、StoreItemPurchaseSubsystem_Starterのレスポンスデリゲートへのバインディングをクリアします。void UItemPurchaseWidget_Starter::NativeOnDeactivated()
{
Super::NativeOnDeactivated();
PurchaseSubsystem->OnCheckoutCompleteDelegates.RemoveAll(this);
Ss_Amount->OnSelectionChangedDelegate.RemoveAll(this);
// ...
} -
OnClickPurchase()関数に移動し、既存の実装を以下のコードに置き換えます。この新しいコードは、前のページで実装したStoreItemPurchaseSubsystem_StarterのCreateNewOrder()関数を呼び出します。void UItemPurchaseWidget_Starter::OnClickPurchase(const int32 PriceIndex) const
{
Ws_Root->SetWidgetState(EAccelByteWarsWidgetSwitcherState::Loading);
// ...
// Otherwise, fallback to use AccelByte platform to purchase the item.
PurchaseSubsystem->CreateNewOrder(
GetOwningPlayer(),
StoreItemDataObject,
PriceIndex,
GetSelectedAmount());
}
リソース
- このチュートリアルセクションで使用されているファイルは、Byte Wars GitHub リポジトリで入手できます。