Arm Mobile Studio是一套专门用于帮助移动游戏开发者管理并优化性能(具体针对 Arm CPU 和 Mali GPU 驱动的移动设备)的免费分析工具。可辅助识别和解决各种性能问题。如今,Mobile Stuidio 为 Unity 推出了全新的插件,让移动游戏的性能优化更加简单。

插件支持将注解以简单的方式合并到项目中,然后在 Arm Mobile Studio 的StreamlinePerformance Advisor中显示。这些注释能提供详细的上下文,让你能查看游戏特定时间点发生的行为或事件,及其相应的后果。

比如,你可以在 Streamline 的时间轴上查看注解。下例中的标记标出了游戏中某一波敌人的生成时机:

通过给游戏运行轴加上开始与结束标记,Performance Advisor 便可以为每条轴单独生成分析报告。本例中就展示出了“Battle(战斗)”轴上的性能信息:

软件安装

Mobile Studio 支持 Unity 2018.4 LTS及以上版本。请使用 Unity Package Manager 安装软件:

打开 Unity 项目,选择Window > Package Manager打开窗口。

在 Package Manager 中,单击“+”图标,选择Add package from git URL...

在框中输入下方 URL,然后点击Add(添加)

https://github.com/ARM-software/mobile-studio-integration-for-unity.git

软件将被自动导入项目,在列表中列出:

Annotations(添加注解)

在安装启动软件后,我们看看各种注解的使用方式。

01 Marker(标记)

标记是位于 Streamline 时间轴顶部的简单注解。调用 Mobile Studio 库便能添加标记。例如:

private void Start()MobileStudio.Annotations.marker("Game Started");

你也可以传入 Color 参数,来设定 Streamline 上标记的颜色,例如:

MobileStudio.Annotations.marker("Game Started", Color.green);

02 Regions(运行段)

你能以一对“Region Start”和“Region End”标记来划定游戏中的分析区域。这些段落将包括在Performance Advisor报告的帧速率分析图上,并在报告末尾形成专门的分析图。

可以在感兴趣的段落上添加前缀为“Region Start”和“Region End”的标记,示例如下:

MobileStudio.Annotations.marker("Region Start Times Square");// Do workMobileStudio.Annotations.marker("Region End Times Square");

注意: 在分析 Unity 2021.2 及以上版本构建的应用程序时,Performance Advisor 无法从 Android 9 设备上记录帧数据。

03Channels(频道)

一段频道是在某个线程上的自定义事件时间轴。你可在创建好的频道中加入注解。类似标记,注解同样带有文本标签和颜色属性,但不同的是,注解可横跨一段时间范围。

要创建频道:

private MobileStudio.Annotations.Channel channel;private void Start()channel = new MobileStudio.Annotations.Channel("Spawner");Annotations can then be inserted into a channel:private void HandleNewWaveStartedEvent()channel.annotate("Spawning Wave", Color.red);private void HandleWaveCompleted(object sender, EventArgs e)channel.end();

在 Streamline 中选择 Core Map 视图,所有频道都将在 Unity Main 线程下显示:

04Custom Activity Maps(自定义活动图)

自定义活动图(CAM)是一组全局时间轴(不限于某个线程)。每张 CAM 都有自己的视窗、名称,一般位于 Streamline UI 的下方,由多条轨道组成,每条轨道会在 CAM 中显示各自的名称与轴。每次活动都会以预注册 job 的形式记录到轨道中。

要想新建轨道并将其添加到 CAM 中:

private MobileStudio.Annotations.CAM gameCAM;private MobileStudio.Annotations.CAM.CAMTrack waveTrack;private MobileStudio.Annotations.CAM.CAMTrack uiTrack;
private void Start()//Create the CAMgameCAM = new MobileStudio.Annotations.CAM("GameActivity");
// Add tracks to the CAMwaveTrack = gameCAM.createTrack("Wave Activity");uiTrack = gameCAM.createTrack("UI Activity");

在组建完 CAM 后,你可以用以下方法之一在轨道内注册一个任务(Job):第一种是在活动开始之际创建任务,在结束时同时结束任务(Job),流程与添加注解类似。详见下方:

private MobileStudio.Annotations.CAM.CAMJob waveJob;
private void HandleNewWaveStartedEvent()waveJob = waveTrack.makeJob("Spawning Wave", Color.red);private void HandleWaveCompleted(object sender, EventArgs e)waveJob.stop();

另一种方法是记录活动的开始和结束时间,随后再将其添加到轨道中:

UInt64 startTime = MobileStudio.Annotations.getTime();// Do workUInt64 endTime = MobileStudio.Annotations.getTime();uiTrack.registerJob("UI Active", Color.blue, startTime, endTime);

第二种方法的优点是 getTime() 方法不会占用过多 CPU 处理时间。它也可以从 Unity Job Scheduler 的 Job 中安全地调用。

你可以在 Streamline 的 CAM 中来查看所有已添加的轨道和 Job:

使用Streamline和Performance Advisor记录运行

在给游戏添加完注释后,你便能构建一个开发版,部署到设备上进行测试。你可以使用 Streamline 记录运行数据、生成 Performance Advisor 报告,报告中将包含所有的注释。下方视频将介绍整个过程:

 全新Arm Mobile Studio for Unity软件包,增强移动端性能分析
打开网易新闻 查看更多视频
全新Arm Mobile Studio for Unity软件包,增强移动端性能分析

在发行版中删除软件

你还可以编写预处理代码,将软件从发行版本中删除,来省去修改脚本的必要,避免代码出错:

01如果版本中尚未存在指明哪些脚本引用了 Mobile Studio API 的 Assembly Definition 文件,请创建一个。在Project View的目标文件夹下右击选择Create > Assembly Definition

02在 asmdef 文件中加入以下内容:

a. 在 Assembly Definition References 下,添加 MobileStudio.Runtime。

b. Version Defines 下,添加如下规则:

Set Resource to com.arm.mobile-studio

Set Define to MOBILE_STUDIO

Set Expression to 1.0.0

如果项目中装有 com.arm.mobile-studio 软件,且版本大于 1.0.0,Unity 会定义一个 MOBILE_STUDIO。

03在代码中,用 MOBILE_STUDIO 标注 Mobile Studio API:

#if MOBILE_STUDIO // Package usage #endif

新的 Mobile Studio 软件可帮助开发者充分利用 Arm Mobile Studio 工具,进一步洞察应用的性能表现,以达到进一步优化游戏的目的。 如果你尚未尝试过 Arm Mobile Studio 工具,软件完全免费,并带有详尽的入门指南。

Arm 和 Unity 将进一步加深合作,力求实现更为完善的移动端分析工具集成。

文中提及的相关链接:

[1] Arm Mobile Studio:

https://developer.arm.com/tools-and-software/graphics-and-gaming/arm-mobile-studio

[2] Mobile Studio Integration for Unity:

https://github.com/ARM-software/mobile-studio-integration-for-unity

[3] Arm Mobile Studio 入门指南:

https://developer.arm.com/tools-and-software/graphics-and-gaming/arm-mobile-studio/learn/get-started

[4] Arm Mobile Studio - Streamline:

https://developer.arm.com/tools-and-software/graphics-and-gaming/arm-mobile-studio/components/streamline-performance-analyzer

[5] Arm Mobile Studio - Performance Advisor:

https://developer.arm.com/tools-and-software/graphics-and-gaming/arm-mobile-studio/components/performance-advisor

Unity 官方微信

第一时间了解Unity引擎动向,学习最新开发技巧

每一个“在看”,都是我们前进的动力