1.BP CDO/Instance
可以在c++中定義一個結構體
然後遍歷結構體數組去獲取數據
2.c++ ConstructHelpers
3.DataTable
然後遍歷每個RowName獲取每一行數據
對於數據表也可以導出到csv,json 格式數據
將數據錶轉出json後,直接在文本里面編輯,更加快捷方便
使用數據表的優缺點
這裏值得說下的是:如果數據表load進來,那麼其表中的所有藍圖,mesh等等資源也都要加載進來,那麼是否會產生一瞬間的卡頓呢,這個要權衡
4.CompositeDataTable
作用是將多個數據表放到一起,在一個數據表中去讀
5 DataAsset
視頻中看到這個函數,其實函數就是獲取該類的CDO
使用數據資產的優缺點
可用BulkEdit快速編輯多個DataAsset是指這樣批量編輯
如何讀取DataAsset?
先繼承自DataAsset
調用異步去加載資源
或者像上面一樣c++暴露一個Get靜態方法,通過loadObject來load一個絕對路徑的DataAsset,然後在藍圖中用Get靜態方法直接調用裏面的變量,使用AssetData優點是不會像DataTable一樣如果表中有很多Mesh會一下子全部加載進來,缺點也很明顯,如果有大量配置對象,需要創建大量的DataAsset
6 CurveTable
相比於DataTable,屬於輕量級的數據表,只能配置一些float數據,好處是能通過csv導入
比如將csv文件直接拖動到ue4中
可以轉成CurveTable
使用該節點去讀取CurveTable
7.Custom WorldSettings
在項目設置裏面有這樣一個選項,可以配置默認的各種藍圖類的默認基類
比如,我們將WorldSettingsClass的默認類改成一個自己寫好的類,那麼就可以添加自定義的屬性放到WorldSettings
8.Settings(ini)
ue4幫我們做好了一個類,我們繼承UDeveloperSettings即可
在ue4編輯器中會識別到
在遊戲目錄下也同樣會生成一個ini文件
如何讀取ini文件的數據呢?
ini文件在引擎啓動時被讀取成一個UObject對象,直接獲取CDO即可
9.Raw: txt/csv/json/xml
使用這種方式的優缺點:
讀取txt輸出成字符串的c++方法:
讀取csv變成DataTable的方法:
讀取Json的方式
小提示:
在ue4的編輯器控件中
有GetEditorWorld和GetGameWorld兩個節點,看是在編輯器中還是在遊戲中傳入不同的WorldContext