UE4中使用資料表(Data Table)

2021-08-07 19:10:52 字數 2824 閱讀 2465

本文依據官方文件資料驅動遊戲性元素整理而來。

做過遊戲的應該都清楚,如果遊戲稍微有點規模,那麼使用資料驅動來做遊戲一般是必不可少的一步,一般也就是策劃通過本表的方式來解決。下面我們來簡單說一下ue4中如何使用datatable來實現資料驅動開發。

顧名思義,資料表就是以有意義且有用的方式將各種相關的資料歸類的**, 其中,資料字段可以是任何有效的 uobject 屬性,包括資產引用。在設計師將 csv 檔案匯入資料表前,程式設計師必須建立行容器以指示引擎如何解釋資料。 這些資料表包含了列名,這些列名和基於**的ustruct結構以及它的(子)變數一一對應, 這個ustruct的結構必須繼承自ftablerowbase才可以被匯入器辨識。

我們隨便建了一張測試表(csv)如下所示:

id,hp,icon,blueprintkey

1,100,texture2d'/game/firstperson/textures/test.test',class'/game/firstperson/bp_datatabletest.bp_datatabletest_c'

2,200,texture2d'/game/firstperson/textures/test.test',class'/game/firstperson/bp_datatabletest.bp_datatabletest_c'

其中bp_datatabletest是乙個繼承自aactor的乙個藍圖類,bp_datatabletest_c是實際生成的藍圖類。

對應的c++**如下所示:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

/** 注意此結構體中的成員變數的名字要跟csv表中的相同,因為它是ue4裡面是通過反射系統來實現資料的

初始化的,當然名字不同也可以,但是它的元資料中的displayname就必須跟表中的字段值對應,具體可以參考

datatablecsv.cpp中的實現就可以了解。*/

ustruct(blueprinttype)

structfdatatabletestdata :publicftablerowbase

uproperty(editanywhere, blueprintreadwrite, category ="datatable test")

int32 hp;

uproperty(editanywhere, blueprintreadwrite, category ="datatable test")

tassetptricon;

// 注意此變數名跟csv中的不同,但是我把它的displayname設定成了"blueprintkey"這樣也是可以的

// 還有注意我使用了tassetsubclassof而不是tassetptr,因為如果是類的話需要使用這個。

uproperty(editanywhere, blueprintreadwrite, category ="datatable test", displayname ="blueprintkey")

tassetsubclassofbp;

};

**編譯完成後,我們就可以把剛才建立好的csv檔案匯入到編輯器中,通過import匯入檔案,匯入後如下圖所示:

在藍圖裡面用法如下圖所示:

注意:在上述資料表示例中,引用的資產為延遲載入資產(

tassetptr 

處理此事項,我們最終使用了

loadasset

和load class asset

來實現非同步載入,注意右上角的時鐘圖示)。

如果資產字段型別設定為

utexture

,則將在載入資料表時載入所有資產。關於

ue4中資源的同步和非同步載入問題,將在另一篇文章中單獨來討論。

出處: 

UE4 自定義結構體 類 資料表

自定義資料表 pragma once include coreminimal.h include engine userdefinedstruct.h include components canvaspanel.h include blueprint userwidget.h include ru...

關於UE4中Log的使用

log的列印 藍圖中的log就是printstring這個節點,在這個節點中有乙個選項 print to log 只有勾選了或者選項,log資訊才能列印到資訊日誌中。log的檢視 首先應顯示出輸出日誌視窗 開啟路徑為 選單欄 視窗 開發者工具 輸出日誌 如何在輸出日誌中找到輸出資訊 藍圖中列印輸出的...

UE4中Taglib使用及外掛程式製作

2015年9月10日0 目錄 隱藏 ue4使用第三方庫時,為了方便跨平台編譯 避免衝突和多次復用,將其製作成外掛程式是不錯的選擇。當前ue4版本為4.10.1。taglib是乙個用於讀取多 檔案標籤的第三方庫,之所以會使用到,是因為當前fmod在讀取含有非英文的標籤會得到錯誤的結果。taglib需要...