? 国产精选污视频在线观看,中文字幕AV一区中文字幕天堂
聯(lián)系我們

給我們留言

聯(lián)系我們

地址:福建省晉江市青陽(yáng)街道洪山路國(guó)際工業(yè)設(shè)計(jì)園納金網(wǎng)

郵箱:info@narkii.com

電話:0595-82682267

(周一到周五, 周六周日休息)

當(dāng)前位置:主頁(yè) > 3D教程 > 圖文教程

UE4教程:擴(kuò)展UE4——鏈接靜態(tài)庫(kù)到UE4引擎中

來(lái)源: 52VR | 責(zé)任編輯:傳說(shuō)的落葉 | 發(fā)布時(shí)間: 2019-05-13 08:49 | 瀏覽量:

擴(kuò)展UE4——鏈接靜態(tài)庫(kù)到UE4引擎中

 

UE4教程:擴(kuò)展UE4——鏈接靜態(tài)庫(kù)到UE4引擎中

目錄

    *綜述

              *范圍與注釋

    *Visual Studio 2013/2015-庫(kù)構(gòu)型

    *創(chuàng)建一個(gè)項(xiàng)目.

    *升級(jí)另一個(gè)項(xiàng)目

              *自定義目標(biāo)UE4模塊

    *以64bit平臺(tái)作為目標(biāo)

    *多線程動(dòng)態(tài)鏈接庫(kù)

              *第三方目錄

  *虛擬引擎4(UE4)-構(gòu)建系統(tǒng)

   * 擴(kuò)展 Base ModuleRules 類

   * 加載我們的庫(kù)

 * Visual Studio 2013/2015——鏈接我們的庫(kù)

    *啟動(dòng)模塊

    *編組

 * 更多信息

綜述

 

        本篇指導(dǎo)的目的是為大家展示如何鏈接靜態(tài)庫(kù)到使用Build System 的UE4引擎中,初期目標(biāo)受眾是那些不打算升級(jí)引擎但希望通過(guò)提供相應(yīng)功能的庫(kù)來(lái)拓展UE4的功能。

 

        舉例說(shuō)吧,我將生成一種叫BobsMagic的庫(kù),在將它鏈接進(jìn)一個(gè)叫UE4Magic的UE4 項(xiàng)目。

范圍與注釋

 

*你將可以鏈接自己設(shè)計(jì)的函式庫(kù)。

*本次指南不會(huì)深入到公開功能或定義任何AP1

*我希望閱覽者至少粗略理解C++,C#,以及MS Visual Studio 2013

*本文所提供的所有代碼路徑都來(lái)自于UE4 Project 基目錄。

 
Visual Studio 2013/2015-庫(kù)配置(Library Configuration)
 
        ?當(dāng)你正在使用UE4引擎,你應(yīng)該使用相同版本的微軟Visual Studio(Microsoft Visual Studio)來(lái)編譯靜態(tài)庫(kù)。這是因?yàn)楦鱾€(gè)版本的Visual Studio的編譯程序各不相同,導(dǎo)致二進(jìn)制上不兼容。請(qǐng)放心,一旦你使用了不同版本的Visual Studio,當(dāng)你視圖將庫(kù)編入時(shí),系統(tǒng)會(huì)提出警告。
 
創(chuàng)建項(xiàng)目
 
        ?請(qǐng)移步MSDN,按上面的步驟生成一個(gè)新的靜態(tài)庫(kù)。由于我們必須做兩個(gè)修正來(lái)讓它們運(yùn)行起來(lái),所以請(qǐng)?jiān)谕瓿珊蠓祷亍?/span>
 
更新另一個(gè)項(xiàng)目
 
        當(dāng)你用Project或配置了早期版本的Visual Studio的解決方案文件打開一個(gè)項(xiàng)目,你會(huì)被要求進(jìn)行版本升級(jí)。同意開始升級(jí)后將會(huì)把點(diǎn)編址在本區(qū)段起始處。假如你錯(cuò)過(guò)了這個(gè)對(duì)話(dialog),或是該對(duì)話未顯示給您,有可能在解決方案資源管理器中選擇菜單欄的“項(xiàng)目> 升級(jí)VC++項(xiàng)目”進(jìn)行升級(jí)。
 

自定義目標(biāo)UE4模塊

 

        我們將需要做一些其他修正以確保我們的庫(kù)能被很容易地鏈入。

 

以64bit平臺(tái)作為目標(biāo)

 

        憑借一個(gè)標(biāo)準(zhǔn)的靜態(tài)庫(kù)項(xiàng)目我們將把x86(32 bit)平臺(tái)作為目標(biāo),該指令不對(duì)UE4起作用。

 
1.打開項(xiàng)目屬性頁(yè)。
2.選擇配置管理器
3.打開使用中的方案平臺(tái)(Active Solution Platform),在下拉菜單中選擇<新...>
4.鍵入或選擇x64
5.點(diǎn)擊“OK”完成保存
 
        你應(yīng)該可以在此點(diǎn)結(jié)束該項(xiàng)目。你應(yīng)該在Visual Studio頂端下拉框看到它。

 

       更多內(nèi)容請(qǐng)見targeting x64

 

多線程動(dòng)態(tài)鏈接庫(kù)(Multi Threaded DLL)

 

        虛幻引擎構(gòu)建系統(tǒng)預(yù)料到使用者提供一個(gè)之后會(huì)鏈接進(jìn)動(dòng)態(tài)鏈接庫(kù)(DLL),因此我們不得不確保我們的項(xiàng)目也能完成此鏈接。

              1.打開項(xiàng)目屬性頁(yè)

              2.過(guò)濾配置管理器> C/C++ > 代碼生成 > 運(yùn)行時(shí)間庫(kù)(Configuration Properties > C/C++ > Code Generation > Runtime Library

              3.在下拉菜單中選擇多線程動(dòng)態(tài)鏈接庫(kù)(Multi Threaded DLL/MD)

              4.點(diǎn)擊“OK”完成保存

 

第三方目錄

 

       創(chuàng)建你的項(xiàng)目,記錄庫(kù)被輸出的位置。根據(jù)你所創(chuàng)建的項(xiàng)目的模式你的庫(kù)文件(lib project)應(yīng)位于/bin/Debug or /bin/Release,除非你提交前更改了位置。我們將把它們從這里移動(dòng)到我們的UE4項(xiàng)目目錄,以解除引用和之后的打包。

 

       打開一個(gè)新的瀏覽器窗口導(dǎo)入你的項(xiàng)目目錄。導(dǎo)入完成后創(chuàng)建一個(gè)新的路徑給你的庫(kù)-/ThirdParty/BobsMagic

 

       對(duì)于每一個(gè)你要引用的庫(kù)你都將遵循這一步驟,假如我要增加V8庫(kù)我將創(chuàng)建/ThirdParty/V8

 

       在這個(gè)目錄里我們將增加兩個(gè)新建文件夾——Libraries和Includes——以覆蓋它們各自的文件。Includes 是與你的庫(kù)相伴隨的頁(yè)眉文件,用于定義你在UE4引擎里引用的API(Application Programming Interface/應(yīng)用程序編制界面)。你應(yīng)該將你的*.庫(kù)文件(s)復(fù)制進(jìn)Libraries目錄。

 

        注意:這是一個(gè)任意的目錄。記錄它的路徑很重要,所以之后你會(huì)在構(gòu)建系統(tǒng)(build system)里引用它。

 

 

UE4教程:擴(kuò)展UE4——鏈接靜態(tài)庫(kù)到UE4引擎中

 

UE4——構(gòu)建系統(tǒng)

 

        現(xiàn)在我們將要逐步執(zhí)行虛幻引擎,把我們的庫(kù)編址到引擎。

 

        創(chuàng)建系統(tǒng)需要用到一些C#編碼,不過(guò)無(wú)須擔(dān)心。我們的示例將非常簡(jiǎn)單,所以你只要復(fù)制粘貼下面的代碼就可以了。

 

擴(kuò)展基礎(chǔ) ModuleRules類

 

        大家也許應(yīng)該添加兩個(gè)屬性到ModuleRules類。我將記錄的這兩個(gè)屬性是用來(lái)確保我們知道我們的模塊和第三方目錄的位置。這兩個(gè)屬性將利用System.IO命名空間,使用2個(gè)路徑靜態(tài)方法。

 

        在 /Source/UE4Magic/UE4Magic.Build.cs里

   LoadBobsMagic保持了一些build system的配置元素,接受TargetInfo對(duì)象,可以讓你在編譯時(shí)間自定義構(gòu)建。它被傳遞后可以讓我們載入視窗目標(biāo)的庫(kù),自后可以被用于靶向其他平臺(tái)。這也使用于以64bit或32bit平臺(tái)為目標(biāo)的情況。如果你還記得,我在上面提到過(guò)x64平臺(tái)為目標(biāo),不過(guò)你也可以借此機(jī)會(huì)編譯出32bit(x86)的庫(kù)。

 

 

        接下來(lái)我們將以將要鏈接的庫(kù)之名定義一個(gè)被傳遞的常量。

 

 

        在 /Source/UE4Magic/UE4Magic.Build.cs里

       ?這是一個(gè)非常直截了當(dāng)?shù)脑O(shè)置,不大可能代表一個(gè)完全跨平臺(tái)的構(gòu)建。我們已經(jīng)做到了創(chuàng)建在編譯時(shí)間通過(guò)的常量WITH_BOBS_MAGIC_BINDING,設(shè)為1(或真)。

 

Visual Studio 2013/2015——鏈接我們的庫(kù)

        

        現(xiàn)在你可以將你的頁(yè)眉文件包含進(jìn)去,并啟動(dòng)執(zhí)行代碼。

 

啟動(dòng)模塊(Startup Module)

 

        虛幻引擎一些已知細(xì)節(jié)是你可以重寫默認(rèn)的游戲執(zhí)行(Game Implement),當(dāng)你的模塊被啟動(dòng)/關(guān)閉(類似于裝載/卸載)時(shí)你能獲得一個(gè)已執(zhí)行的類函數(shù)。這未必與build system相關(guān),但卻是插件開發(fā)者們很有可能在初始化點(diǎn)尋找的常見的事。

 

        在/Source/UE4Magic/UE4Magic.cpp里

        你可以在此點(diǎn)啟動(dòng)Visual Studio 調(diào)試器,一步步跟蹤代碼。如果你鏈接了調(diào)試版本,你甚至可以把代碼放入你所編譯的庫(kù)。他將裝載于 ThirdParty/BobsMagic/Includes/Welcome/ 的頁(yè)眉文件,讓庫(kù)像我們預(yù)期的那樣執(zhí)行。

 

編組(Marshalling)

 

       你很快就能發(fā)現(xiàn),你的庫(kù)將不會(huì)使用虛幻引擎4里的相同類型。重要的是,你要在兩者之間以一種有意義切深思熟慮的方法編組你的數(shù)據(jù)。若在之后改變可能將會(huì)導(dǎo)致復(fù)雜化的問(wèn)題。

 

       當(dāng)把V8鏈接進(jìn)虛幻引擎4時(shí),我在StringConv.h里發(fā)現(xiàn)了一對(duì)宏命令,用于在寬位字符(Wide Character)、統(tǒng)一碼(Unicode)、字符串(Strings)和C-style字符串(C style Character Strings)之間的轉(zhuǎn)換。所以我推薦各位再看看其他有用的轉(zhuǎn)換。你最終可能需要?jiǎng)?chuàng)建封裝器對(duì)象(Wrapper objects)。

 

更多信息

 

 

       我已經(jīng)成功將V8鏈接進(jìn)UE4了,現(xiàn)在正在編寫一個(gè)模塊讓大家在自己的項(xiàng)目里以JavaScript作為腳本語(yǔ)言。


相關(guān)文章
網(wǎng)友評(píng)論

您需要登錄后才可以發(fā)帖 登錄 | 立即注冊(cè)

關(guān)閉

全部評(píng)論:0條

推薦
熱門