DataTable
DataTable用の構造体を作成する
DataTable用の構造体「FCPPFruitInfo」を作成します。
親クラスに[None]を選択します。
ClassTypeとClass名を設定します。
Property | Value |
---|---|
Class Type | Public |
Name | CPPFruitInfo |
「CPPFruitInfo.cpp」を削除します。
構造体「FCPPFruitInfo」を「CPPFruitInfo.h」に実装します。
Variable Name | Variable Type |
---|---|
Price | int32 |
Weight | float |
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Engine/DataTable.h"
#include "CPPFruitInfo.generated.h"
USTRUCT(Blueprintable)
struct FCPPFruitInfo : public FTableRowBase
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 Price;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
float Weight;
};
Buildを実行します。
DataTableを作成する
構造体を作成したらDataTableを作成します。
Contents Browserの空きスペースを右クリック -> Miscellaneous -> 「Data Table」を選択する。
DataTble用に作成した構造体「FCPPFruitInfo」を選択して「OK」ボタンをクリックします。
作成されたDataTableの名前を「DT_CPPFruitInfo」に設定します。
データを入力する
作成したDataTable「DT_BPFruitInfo」を開きます。
「+Add」をクリックし、「Row Name」と構造体のメンバー変数に値を入力します。
「Row Name」には重複した値を入力できません。
以下の表の情報を入力します。
Row Name | Price | Weight |
---|---|---|
Apple | 100 | 50.5 |
Orange | 200 | 100.0 |
Banana | 298 | 250.0 |
BlueprintでDataTableから値を取得する
DataTableから値を取得する処理を実装するBlueprint「BP_CPPDataTableSample(親クラス:Actor)」を作成します。
変数を作成する
DataTableの「Soft Object Reference」を「Variable Type」に設定した変数を追加します。
Variable Name | Variable Type |
---|---|
DataTable | DataTable(Soft Object Reference) |
「Compile」を実行して、変数のDefaultValueに「DT_BPFruitInfo」を設定します。
Begin PlayイベントでDataTableを読み込んでRowNameを指定して出力する
変数にDataTableの「Soft Object Reference」を読み込むには「Async Load Asset」ノードを使用します。
読み込みが完了すると「Completed」実行ピンが呼ばれ、「Object」アウトピンにはDataTableが読み込まれた参照(Object Reference)が入っています。
「Cast to DataTable」でDataTableに変換します。
「Get Data Table Row」の「Row Name」に取得したいRow(行)の「Row Name」を入力します。
「Row Name」が見つかると「Row Found」が実行されて「Out Row」に構造体の参照が入っています。
「Out Row」からDataTableを作成した時に設定した構造体「FCPPFruitInfo」を取得できます。
「BP_CPPDataTableSample」をViewportに追加します。
プレイするとDataTableの「Row Name」が「Apple」の行の情報を出力できます。
DataTableのすべてのRow Nameを取得して出力する
DataTableのRow(行)をすべて出力する処理に変更します。
「Get Data Table Row Names」はすべての行の「Row Name」を配列として取得できます。
プレイするとDataTableの「Row Name」がすべて出力できます。
参照URL