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

UE4中的网络模式

Actor中的GetNetMode

Actor 中有个函数 GetNetMode 可以用来判断当前 Actor 所处的网络模式,如下

  • NM_Client: 客户端,联机模式中的客户端

  • NM_Standalone: 运行在服务器模式下,同时包含客户端的功能,也就是平常意义上的单机模式,比如在编辑器中把 number of Players 设置为1,并且不勾选Run Dedicated Server时,就会运行在这个模式下

    standalone setting

  • NM_DedicatedServer: 运行在服务器模式下,只包含服务器功能,这个是纯服务器模式,不会有客户端相关的功能运行,比如渲染相关的模块

  • NM_ListenServer: 运行在服务器模式下,同时包含客户端的功能,同时也作为主机让其他客户端连接进行联网游戏,比如很多游戏中的局域网模式。在编辑器中把 number of Players 设置为大于1,并且不勾选Run Dedicated Server时,主机就会运行在这个模式下

以上三个模式都可以认为是服务器,区别就是带不带本地玩家,能不能让其他机器连接

模式 是否带本地玩家 是否能作为主机
NM_Standalone
NM_DedicatedServer
NM_ListenServer
Read More

UE4 文件系统

类图

类图

Read More

UE4 战争迷雾

战争迷雾这个游戏机制在 RTS 游戏中非常常见,主要就是逻辑可见性的可视化表达。

Dota2战争迷雾效果

本篇文章就是要在 UE4 中实现一个简单的迷雾效果。基本的思路就是计算可见性,将可见性信息保存到纹理中,然后在后处理材质中将这个纹理映射到世界中。

Read More