ReLayer Floating UI压力测试:繁忙战斗画面中的性能
介绍开发中的ReLayer Floating UI,以及我们在Android模拟器压力测试中的发现。
画面繁忙时,Floating UI还能跟上战斗吗?我们在ReLayer示例中快速移动镜头和角色、切换主题并密集显示数字。这里分享在Android模拟器上进行的30秒测试结果。

画面繁忙时会怎样?
我们让开发中的示例连续运行30秒:快速请求切换主题、改变镜头、移动角色、密集显示数字,最后将这些情况同时叠加。数字密集的两个阶段以每秒1,000个显示事件为目标;这些是显示测试值,不是实际游戏伤害。
数字共享128个同时显示的槽位。槽位满时,新事件会替换旧数字,因此每秒1,000个事件不代表同时显示1,000个数字。计时前我们预先准备了主题缓存。
结果与测试条件
在1080p Android模拟器上,使用Unity 2022.3和原生x86_64的30秒测试中,Unity相机平均为66.85 FPS,WebView动画回调平均每秒88.37次。测试提交了12,012个显示事件,生成工作跳过次数为0。两项平均值都超过60,但部分测量区间仍低于60。
另一次Unity 6 ARM64模拟器测试中,Unity平均为52.80 FPS,WebView平均为87.92 FPS。由于引擎版本和进程架构都不同,这不是针对单一原因的比较。这些结果包含录制开销,来自模拟器,并非实体设备的结果或帧率保证。
融入游戏世界的界面
示例将名字、血条、伤害与治疗数字、增益和连击带入场景。八种风格从奇幻到鲜明的战术界面各有不同,开发者也可以修改React源码,让它符合自己游戏的视觉语言。
Unity随着镜头和角色移动追踪UI的位置。React内容会被捕获为图像,并在内容变化时异步更新。位置追踪与内容刷新是两个过程,因此新的血量数值可能比移动稍晚到达。

为下一次命中留出余地
在保持相同负载的测试中,我们找到了复用已准备画面、减少重复工作的机会。我们也会关注平均值之外的变化:对于专注战斗的玩家,短暂的停顿同样重要。
本文介绍的扩展Floating UI和压力测试改进仍在开发中,尚未作为商店软件包发布。我们会在准备发布的过程中继续测试不同环境。
