Arm Mobile Studio是一套专门用于帮助移动游戏开发者管理并优化性能(具体针对 Arm CPU 和 Mali GPU 驱动的移动设备)的免费分析工具。可辅助识别和解决各种性能问题。如今,Mobile Stuidio 为 Unity 推出了全新的插件,让移动游戏的性能优化更加简单。
该插件支持将注解以简单的方式合并到项目中,然后在 Arm Mobile Studio 的Streamline和Performance 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 报告,报告中将包含所有的注释。下方视频将介绍整个过程:
在发行版中删除软件
你还可以编写预处理代码,将软件从发行版本中删除,来省去修改脚本的必要,避免代码出错:
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引擎动向,学习最新开发技巧
每一个“在看”,都是我们前进的动力
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.