高级蓝图原生化

程序员将游戏进程元素展示给蓝图的技术指南。

Windows
MacOS
Linux
前置主题

此页面假定您已掌握以下主题的前置知识。请在继续之前先阅读它们。

使用虚幻自动化工具进行构建

若要在使用虚幻自动化工具(Unreal Automation Tool)从命令行进行构建时将蓝图原生化,请将“-nativizeAssets”切换为“BuildCookRun”命令。

标头声明

原生化蓝图存储在一个新的独立模块中,这意味着来自游戏进程模块的标头现在用于原始模块之外。 您应该检查所有的标头是否声明了所有正在使用的类和结构体;它们要么作为包含的标头,要么作为前向声明。

修复缺失的标头

很多项目都有一个“聚合”标头:“[GameName]/[GameName].h”,或“[GameName]/Public/[GameName].h”。

  • 如果您将此标头的路径添加到“[BlueprintNativizationSettings]”下的“DefaultEditor.ini”中的“FilesToIncludeInModuleHeader”, 您可以修复许多与缺失标头相关的问题。

促进代码合作

有一些限制有助于使手工编写的代码和原生化代码之间的合作变得更加可靠和高效。出于这种考虑, 不支持以下实现:

  • 标记为“BlueprintPure”或“BlueprintCallable”的私有和受保护函数

  • “noexport”结构体和类

  • 带“蓝图可见(BlueprintVisible)”或“可编辑(Editable)”标签的Bitfield变量

  • 私有Bitfield变量

  • “UBlueprintGeneratedClass”、“UUserDefinedStruct”和“UUserDefinedEnum”变量(或基于这些变量的任何类型)

技术细节

如果遇到编译器或连接器错误(如LNK1000或LNK1248),请尝试通过在“DefaultEngine.ini”配置设置文件中 排除蓝图类型或特定蓝图来减少项目中原生化蓝图的数量。有关从原生化中排除蓝图的更多信息, 请参阅原生化蓝图文档。

如果您想了解蓝图原生化过程的“内部”工作方式,请通读以下模块:

  • “BlueprintCompilerCppBackend”模块(在“Engine\Source\Developer\BlueprintCompilerCppBackend\”中)将蓝图语法树转换为C++。

  • “BlueprintNativeCodeGen”模块(在“Engine\Source\Developer\BlueprintNativeCodeGen\”中)在烘焙和打包时会执行许多“神奇的变化”。

标签
Select Skin
Light
Dark

欢迎来到全新虚幻引擎4文档站!

我们正在努力开发新功能,包括反馈系统,以便您能对我们的工作作出评价。但它目前还未正式上线。如果您对此页面有任何意见与在使用中遭遇任何问题,请前往文档反馈论坛告知我们。

新系统上线运行后,我们会及时通知您的。

发表反馈意见