天天看點

UE4引擎自定義插件導出類定義的簡單流程前言具體流程總結備注

前言

今天學習了一下使用UE4引擎導出類定義的流程,目的是使用将C++代碼導出到Lua檔案中,友善C++和Lua代碼互相調用,跟蹤了一下代碼發現,産生Lua可用的C++函數的啟動代碼實際上在UnrealHeaderTool工具中,原來和生成XXX..generated.h的工具是同一個,如果UnrealHeaderTool工具檢測到已經加載的插件繼承了

IScriptGeneratorPluginInterface

,那麼它就會調用該插件的

ExportClass

方法,按照規定的方式将C++定義導出成Lua可用的全局函數…

具體流程

  1. 按要求選出處理導出代碼工作的插件
    UE4引擎自定義插件導出類定義的簡單流程前言具體流程總結備注
  2. 檢測該插件應該導出代碼則開始導出
    UE4引擎自定義插件導出類定義的簡單流程前言具體流程總結備注
  3. 遞歸導出類的函數
    UE4引擎自定義插件導出類定義的簡單流程前言具體流程總結備注
  4. 自定義的導出類函數
    UE4引擎自定義插件導出類定義的簡單流程前言具體流程總結備注
  5. 函數的調用堆棧
    UE4引擎自定義插件導出類定義的簡單流程前言具體流程總結備注

總結

看了一天還有發現有一些需要注意,并且幾個問題沒有搞清楚,後續慢慢理清:

  1. 想要利用插件導出類的定義,或者其他導出代碼的需求,需要繼承 IScriptGeneratorPluginInterface插件接口。
  2. 關于UE4的

    .uhtmanifest

    檔案不知道是按照什麼規則生成的,也不太清楚是什麼時間生成的,現在發現負責導出的插件在初始化時會用到檔案中對于子產品的路徑配置。
  3. 現在發現插件的

    GetGeneratedCodeModuleName

    函數在導出作用中起到篩選導出功能的作用,暫時不能确定還有什麼用。
  4. 不知道定制發出代碼插件需要改哪些參數,現在發現項目中有兩個導出代碼的插件,但是沒有發現他們在定義和初始化的時候有哪些明顯的差異。

備注

啟動UnrealHeaderTool工具的參數,假設引擎根目錄為EngineRoot_4.16,項目根目錄為MainProject:

則啟動參數為:UnrealHeaderTool “G:\WorkSpace\MainProject\MainProject.uproject” “G:\WorkSpace\MainProject\Intermediate\Build\Win64\MainProjectEditor\Development\MainProjectEditor.uhtmanifest” -LogCmds=”loginit warning, logexit warning, logdatabase error” -Unattended -WarningsAsErrors

繼續閱讀