社区分享 | OpenHarmony 团结引擎游戏检测和设置高帧率的方法

文摘   游戏   2024-05-11 19:35   上海  

这篇文章转载自社区资深开发者 Pengju,探索了使用团结引擎开发 OpenHarmony 应用时,显示实时帧率及设置高帧率的方法。

开发好团结引擎的游戏后,安装到开发者手机上,可以正常使用,但流畅度不高。
后台抓 trace 分析,帧率仅 30fps,定位发现引擎应用默认 34ms 左右才送 1 帧给系统,也就是引擎应用自渲染时固定成了 30fps。

经过定位解决了该问题,将引擎游戏提高到了 60fps,过程中用到了一些好的方法,将经验总结分享给大家。

界面显示实时帧率的方法


从后台抓 trace 统计帧率的方式,不是很方便,费时费力,通过如下简单 3 步,即可在游戏界面上直观看到实时帧率。

1、新建 C# 源码文件 FPSGUI.cs,内容如下:

using UnityEngine;using System.Collections;/// <summary>/// ONGUI帧显示/// </summary>public class FPSGUI : MonoBehaviour{    public bool IsShow = true;
private float currentTime = 0; private float lateTime = 0; private float framesNum = 0; private float fpsTime = 0; // Update is called once per framevoid Update
private void Update() { if (IsShow) { currentTime += Time.deltaTime; framesNum++; if (currentTime - lateTime >= 1.0f) { fpsTime = framesNum / (currentTime - lateTime); lateTime = currentTime; framesNum = 0; }
} } void OnGUI() { if (GUI.Button(new Rect(50, 50, 150, 60), "FPS : " + fpsTime.ToString())) { } }}
2、在 Assets 新建 Scripts 目录,将 FPSGUI.cs 放置在该目录下,如下图所示:

3、拖动 FPSGUI 到 MainCamera 上,如下图所示:

这样就修改完了,导出 OpenHarmony 工程,在 DevEco Studio 打包签名,安装应用到开发者手机上,就可以在游戏画面左上角实时看到帧率。 

经验证,界面显示的帧率与后台测试的帧率基本一致。

设置高帧率的方法

默认的应用只有 30fps,怎么提高到 60fps 呢?
在团结引擎 Editor 中,VSYNC 的默认配置已经是 Every V Blank 了,也就是 60fps,但这个设置没有生效,需要用另外的方法设置帧率。

在代码中设置帧率的方法如下,找一个模块,比如 Player,在它的 start 函数中设置 Application.targetFrameRate 就可以改变帧率,类似如下代码:

void Start()    {         Application.targetFrameRate = 60;    }

我工程中修改后的代码如下:

重新导出 OpenHarmony 工程安装后,游戏应用就有 60fps 了。

了解团结引擎最新进展、分享开发心得、官方团队答疑,请关注团结引擎官方开发者社区专区https://developer.unity.cn/plate/tuanjie-eng‍ine‍‍

长按关注

Unity 官方开发者服务平台

第一时间了解 Unity 社区动向,学习开发技巧


 点击“阅读原文”,访问 Pengju 的 CSDN 主页 


Unity官方开发者服务平台
Unity引擎官方开发者服务平台,分享技术干货、学习课程、产品信息、前沿案例、活动资讯、直播信息等内容。
 最新文章