版權聲明:本文爲燕良原創文章,轉載請註明出處:http://blog.csdn.net/neil3d。
在遊戲開發中經常要用到數據驅動,俗稱“策劃拉表”。在虛幻4引擎中,有多種方式處理數據,在這裏我就介紹最常用的兩種。
虛幻引擎內建的表格導入機制
假設策劃同學有以下這樣一個數據表,用來存儲道具相關的信息:
Name | Damage | Price | Desc |
---|---|---|---|
Shanker | 707 | 6395 | Warmongering Gladiator’s Shanker |
Ripper | 814 | 6400 | Tournament Gladiator’s Ripper |
Chopper | 407 | 3976 | Warmongering Combatant’s Chopper |
想要導入這個數據表的話,首先需要定義一個與這個表結構相對應的數據結構。如果使用C++編程的話,需要創建一個FTableRowBase的派生類;使用Blueprint的話,就創建一個標準的結構體就可以了。下圖就是我爲這個表格創建的Blueprint Struct。
然後,上述表格需要存成CSV格式。然後,你就可以把這個CSV文件拖放到引擎的Content Browser中了。在數據導入的設置中,把數據類型設置成我們這個結構體:ItemDef。
最後,我們就可以使用GetDataTableRowNames和GetDataTableRow這兩個藍圖節點來讀取這個表格數據了。具體的藍圖如下:
如果看不清圖片的話,請下載工程文件吧。:)
虛幻引擎的DataAsset
另外一個常見的需求是我們需要在引擎編輯器中編輯一些常用的數據對象,這些數據並不需要批量配置,但需要方便靈活的修改。在Unity3D中提供了ScriptObject來做這類事請,而在虛幻4中提供了DataAsset,也是同樣的目的,使用方法也十分類似。
首先我們需要創建一個UDataAsset的派生類,用這個類來管理一組數據:
/**
* 演示使用DataAsset來處理數據
*/
UCLASS(Blueprintable, Category="DataDemo")
class UNREALCOOKBOOK_API UQuestDataAsset : public UDataAsset
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "DataDemo")
FString QuestSetName;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "DataDemo")
TArray<FQuestDef> QuestArray;
};
有了這個類之後,在Content Browser的New Asset菜單–>雜項裏面選擇“DataAsset”,就會彈出下面這個窗口,窗口中就多出了我們這個類:
- 創建了這個DataAsset之後,就可以用引擎內置的編輯器來編輯它:
- 編輯好之後,我們就可以在Blueprint中使用LoadAsset節點來加載它:
相關官方文檔:https://docs.unrealengine.com/latest/INT/Gameplay/DataDriven/