? 久久精品无码一区二区日韩a软件,欧美性爱精品在线视频,为您提供五月天激情电影
聯(lián)系我們

給我們留言

聯(lián)系我們

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

郵箱:info@narkii.com

電話:0595-82682267

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

當前位置:主頁 > 3D教程 > 圖文教程

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

來源: 52VR | 責任編輯:傳說的落葉 | 發(fā)布時間: 2019-05-13 08:49 | 瀏覽量:

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

 

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

目錄

    *綜述

              *范圍與注釋

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

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

    *升級另一個項目

              *自定義目標UE4模塊

    *以64bit平臺作為目標

    *多線程動態(tài)鏈接庫

              *第三方目錄

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

   * 擴展 Base ModuleRules 類

   * 加載我們的庫

 * Visual Studio 2013/2015——鏈接我們的庫

    *啟動模塊

    *編組

 * 更多信息

綜述

 

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

 

        舉例說吧,我將生成一種叫BobsMagic的庫,在將它鏈接進一個叫UE4Magic的UE4 項目。

范圍與注釋

 

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

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

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

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

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

自定義目標UE4模塊

 

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

 

以64bit平臺作為目標

 

        憑借一個標準的靜態(tài)庫項目我們將把x86(32 bit)平臺作為目標,該指令不對UE4起作用。

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

 

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

 

多線程動態(tài)鏈接庫(Multi Threaded DLL)

 

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

              1.打開項目屬性頁

              2.過濾配置管理器> C/C++ > 代碼生成 > 運行時間庫(Configuration Properties > C/C++ > Code Generation > Runtime Library

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

              4.點擊“OK”完成保存

 

第三方目錄

 

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

 

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

 

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

 

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

 

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

 

 

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

 

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

 

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

 

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

 

擴展基礎(chǔ) ModuleRules類

 

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

 

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

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

 

 

        接下來我們將以將要鏈接的庫之名定義一個被傳遞的常量。

 

 

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

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

 

Visual Studio 2013/2015——鏈接我們的庫

        

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

 

啟動模塊(Startup Module)

 

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

 

        在/Source/UE4Magic/UE4Magic.cpp里

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

 

編組(Marshalling)

 

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

 

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

 

更多信息

 

 

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


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

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

關(guān)閉

全部評論:0條

推薦
熱門