OpenHarmony团结引擎游戏检测帧率和设置高帧率的方法
开发好团结引擎游戏后,安装到开发者手机上,可以正常使用,但流畅度不高。 后台抓trace分析,帧率仅30fps,定位发现引擎应用默认34ms左右才送1帧给系统,也就是引擎应用自渲染时固定成了30fps。 经过定位解决了该问题,将引擎游戏提高到了60fps,过程中用到了一些好的方法&
开发好团结引擎游戏后,安装到开发者手机上,可以正常使用,但流畅度不高。
后台抓trace分析,帧率仅30fps,定位发现引擎应用默认34ms左右才送1帧给系统,也就是引擎应用自渲染时固定成了30fps。
经过定位解决了该问题,将游戏帧率提高到了60fps,过程中学到了一些好的方法经验,总结分享给大家。
1 界面显示实时帧率的方法
从后台抓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上,如下图所示,右侧可以看出Main Camera已挂载上FPSGUI脚本。
这样就修改完了,导出OpenHarmony工程,在DevEco Studio打包签名,安装到开发者手机上,就可以在游戏画面左上角实时看到帧率。
经验证,界面显示的帧率与后台测试的帧率基本一致。
2 设置高帧率的方法
引擎应用默认的帧率只有30fps,怎么提高到60fps呢?
检查团结引擎Editor的VSYNC配置,默认已经是Every V Blank了,也就是60fps,这个设置没有生效,采用另外的方法设置帧率:在代码中设置帧率。
在代码中设置帧率的方法是,随便找一个模块,比如Player,在它的start函数中设置Application.targetFrameRate为想要的值,类似如下代码,将目标帧率设置为60fps。
void Start()
{
Application.targetFrameRate = 60;
}
我的工程中修改后的代码如下:
重新导出OpenHarmony工程、打包签名安装后,游戏应用就有60fps啦。
更多推荐
所有评论(0)