UE4中的反射之二:运行阶段

环境

引擎版本: github 4.20

简介

在上一篇文章里主要是针对 UHT 生成的 .generated.h 来分析反射相关的代码展开参与编译的过程。这篇文件要通过 UHT 生成的另外一个文件 .gen.cpp 来分析运行过程中的反射信息的收集使用。使用的例子还是上篇文章中的 AMyActor

在上篇文章中,分析反射代码的入口是 GENERATED_BODY 宏。本篇文章也一样有个重点的入口,那就是 UHT 在 .gen.cpp 中生成的静态全局变量。我们都知道在 C++ 中,全局变量的初始化是先于 main 函数进行的,所以就可以在这个全局变量的构造函数中进行反射信息的注册,最终保存到 UClass 的实例中,供其它地方的代码使用。

Read More

UE4中的反射之一:编译阶段

环境

引擎版本: github 4.20

参考文章

有关反射的材料看以下几个就够了,如果你看了还不理解的话,那再看其它材料估计也没什么用,你可能需要先使用一段时间虚幻4引擎,然后再返回头来继续看

简介

UE4 中的反射大概的流程是在编译前利用 UnrealHeaderTool 对代码文件内容进行处理,生成 .generated.h/.gen.cpp 文件,在生成的代码中加入反射信息,并和自己编写的代码一起编译,在运行时动态地将这些反射信息收集起来使用。

UnrealHeaderTool 预处理

我们编写代码过程中用到的 UCLASS UFUNCTION UPROPERTY 这些宏就是参与这个阶段,当 UHT 处理代码时,遇到这些宏标记,就知道接下来的代码需要进行处理,具体怎么处理根据宏类型不同而不同,具体就不展开了

UCLASS UFUNCTION UPROPERTY 这些宏在之后的 C++ 编译器编译过程中的预处理中,都会被展开,只不过展开的内容是空的,所以这些宏只是作为 UHT 阶段的代码处理标记使用,不会影响到真正的编译

Read More

UE4 Android联机调试

环境

引擎版本: github 4.20

连接 Android 设备

用 USB 线将 Android 设备连接到电脑上,在设置中打开开发者选项,然后勾选 USB调试

出包

首先需要编译打包工程,注意打包的时候不能勾选 For Distribution 选项(对应的命令行是 -distribute),编译选项最好是 Debug 或者 Development

配置VS

打开 Tools -> Option -> Cross Platform -> C++ -> Android,默认的配置如下

DefaultEnv.png

将他们改成打包 APK 时使用的对应路径,我是用引擎自带的 AndroidWorks 安装的环境,所以改成如图所示

NewEnv.png

Read More

UE4 CanvasPanel 渲染批次合并分析优化

在 UE4 中,CanvasPanel 可以进行批次合并,前提是在项目设置中开启 Explicit Canvas Child ZOrder 选项,但是在使用过程中,发现批次合并并不是很理想,比如下面这种情况

在上图中,第一个 Canvas Panel 下面有两个子控件,一个 Image,还有另一个 Canvas Panel。第二个 Canvas 下面再放一个 Image,两个 Image 控件使用同一张纹理(或者是同一图集中的两张图片),在实际运行后,这两张图片并没有合并到同一个渲染批次中。

Read More

UE4 UAT BuildCookRun命令行参数

BuildCookRun命令行参数

常用参数如下,详细参数见源文件 Engine\Source\Programs\AutomationTool\AutomationUtils\ProjectParams.cs,注意有些参数不能同时指定,具体见 ValidateAndLog 函数里的参数检查规则。Engine\Source\Programs\AutomationTool\AutomationUtils\Automation.cs 有一些全局参数定义

整体打包过程如下: Build -> Cook-> Stage -> Package -> Archive

  • -TargetPlatform(-Platform): 目标平台,定义在枚举 UnrealTargetPlatform 中,包含 Win32/Win64/Mac/XboxOne/PS4/IOS/Android/HTML5/Linux/AllDesktop/TVOS/Switch
  • -ServerTargetPlatform(-ServerPlatform): Dedicated Server 目标平台,定义同上
Read More