❶ UE4基礎知識總結(四)
六、自動測試技術
1.自動測試分為簡單測試和復雜測試,簡單測試用來描述單個原子測試,復雜測試用來運行基於多個輸入的相同代碼。
2.簡單測試可用來確認特定功能如預期般可操作。一般都是單元測試或功能測試。
3.復雜測試可被用來對一系列物品迭代並對每個物品運行相同的功能。一般就是內容壓力測試。例如載入所有地圖或編譯所有藍本。
4.當前的規則是將所有的自動測試放置到相關模塊內的PrivateTests目錄。測試文件命名為[ClassFilename]Test.cpp
5.這些測試通過應用RunTest()函數來單獨定義其功能,而且Parameters字元串將保持為空字元串。
IMPLEMENT_SIMPLE_AUTOMATION_TEST( TClass, PrettyName, TFlags )
IMPLEMENT_COMPLEX_AUTOMATION_TEST( TClass, PrettyName, TFlags )
七、編碼規范
1.編碼規范對於程序員來說非常重要,原因如下:
a.一套軟體80%的生命周期都是維護。
b.在軟體的整個生命周期中,幾乎不可能一直是軟體的原始作者來對其進行維護。
c.編碼規范可以改進軟體的可讀性,從而使得工程師可以快速並透徹地理解新的代碼。
d.如果我們決定將源代碼公布到 MOD 開發者社區,那麼我們想讓它通俗易懂。
e.大部分編碼規范實際上是交叉編譯器兼容性所要求的。
2.變數、方法及類的名稱應該清晰、明確且具有描述性。
3.注釋應該是輔助加強代碼的,代碼是功能實現,注釋表明了代碼的目的。
八、對象
1.虛幻引擎中的對象基礎類為UObject。UCLASS宏可用於標記從UObject派生的類,使UObject處理系統識別到它們。
2.UCLASS宏為UObject提供一個對UCLASS的引用,描述其基於虛幻引擎的類型。
3.每個UCLASS保留一個稱作「類默認對象(Class Default Object)」的對象,簡稱CDO。
4.新建UObject示例的函數有:
a.NewObject () 創建一個自動生成命名的新實例。在簡單情況下使用最佳。
b.NewNamedObject () 使用特定命名以及其他幾項任選參數創建一個新實例。將判斷新實例的Outer中是否存在命名沖突。
c.ConstructObject () 創建一個提供所有可用創建選項的新實例。僅限需要靈活性時使用。
d.new 用於在特定低層情況下構建對象,如構建函數需要參數時。
5.UObjects提供的功能有:
a.垃圾回收:虛幻引擎實現了一個垃圾回收方案,定期清理不再被引用或被顯式標記為待銷毀的 UObject。
b.引用更新:對象被垃圾回收清理時,對它的UPROPERTY引用將自動被更新為 NULL。
c.映象
d.序列化:當一個 UObject 被序列化時,所有 UProperty 數值將被自動書寫或讀取。
e.默認屬性變化自動更新:UClass 的CDO發生變化時,引擎將嘗試把這些變化智能應用到類的所有實例上(在它們被載入時)。
f.自動屬性初始化:初始化時,在構建函數被調用之前,UObject 將被自動清零。
g.自動編輯器整合:編輯器理解 UObjects 和 UProperties,還可將這些數值自動公開進行編輯,而無需編寫特殊代碼。
h.運行時類型信息可用:UObject 明確其為何種 UClass,運行時可作出類型相關的決定。
i.網路復制:UObject 系統包括一個穩定的功能集,實現網路通訊和多人 游戲 。
6.UObjects的頭文件格式:
#include 'Object.h'
#include 'MyObject.generated.h'
UCLASS() //UCLASS 宏使虛幻引擎 4 能識別 UMyObject。
class MYPROJECT_API UMyObject : public UObject //如 MyProject 希望將 UMyObject 類公開到其他模塊,則需要指定 MYPROJECT_API。
{
GENERATED_BODY() //對類進行設置,以支持引擎要求的基礎結構。
};