UE5在VS中手動(dòng)添加自定義模塊
最近開(kāi)始接觸Unreal Engine,首先面對(duì)的問(wèn)題,就是如何在一個(gè)UE的C++項(xiàng)目中添加自定義模塊。網(wǎng)上有一些不錯(cuò)的說(shuō)明文章,但最終,我還是接連地掉進(jìn)幾個(gè)坑里面。于是,決定簡(jiǎn)單寫幾點(diǎn)“避坑心得”回饋社會(huì)。
避坑技巧(零),IDE從VS換成Rider,Rider提供了模塊創(chuàng)建向?qū)?,輕松愜意。后面不用看了。
在Visual Studio環(huán)境下,我們需要手動(dòng)完成以下工作:
在工程Source目錄下,新建`<模塊名>`文件夾;
在`Source/<模塊名>`文件夾下,新建`Private`文件夾、`Public`文件夾和`<模塊名>.Build.cs`編譯配置文件;
在`<模塊名>.Build.cs`中添加下面的內(nèi)容:
在`Source/<模塊名>/Public`下,新建頭文件,命名為`<模塊名>.h`;
在`Source/<模塊名>/Private`下,新建源文件,命名為`<模塊名>.cpp`;
向工程的 `<工程名>.Target.cs` 和 `<工程名>Editor.Target.cs` 中添加模塊引用;
一個(gè)Unreal的項(xiàng)目默認(rèn)有DebugGame、DebugGame Editor、Development、Development Editor以及Shipping,五個(gè)不同的編譯目標(biāo)配置;
如果編譯目標(biāo)是Debug Game、Development和Shipping,生效的編譯文件是`<工程名>.Target.cs`;
如果編譯目標(biāo)是Debug Game Editor和Development Editor,生效的編譯文件是`<工程名>Editor.Target.cs`;
因此,一般可以認(rèn)為`<工程名>.Target.cs`中的引用模塊應(yīng)該是`<工程名>Editor.Target.cs`的子集。
再?gòu)?qiáng)調(diào)一下,2個(gè)Target.cs中都必須添加這句代碼:ExtraModuleNames.AddRange(newList<string>(){"CustomModuleName"});
在文件瀏覽器中右鍵點(diǎn)擊`.uproject`文件,選擇`Generate Visual Studio project files`;
這個(gè)操作可以認(rèn)為是UBT的入口,可以重新生成.sln文件和Intermediate目錄(包括其內(nèi)部的.vcxproj文件)。
到這一步,我們已經(jīng)可以在Binaries/目錄下編譯出模塊對(duì)應(yīng)的DLL文件了。
在`.uproject`中添加模塊加載項(xiàng),這樣才能加載模塊:
模塊加載之后,模塊的StartupModule函數(shù)才會(huì)被調(diào)用;
模塊加載之后,在UnrealEditor中新建C++類時(shí),才能把它指定到對(duì)應(yīng)的模塊中。
總結(jié)一下:
按目錄規(guī)范添加文件:.Build.cs、.h和.cpp;
按規(guī)范編寫上面3個(gè)文件的內(nèi)容;
在XXXTarget.cs和XXXEditor.Target.cs中添加模塊依賴;
通過(guò)uproject啟動(dòng)UBT重新生成vs工程;
在uproject中添加模塊的啟動(dòng)配置。