一般游戏为了更好的适配各种机型,会对游戏进行锁帧。就会使用Application.targetFrameRate这个方法设置帧率,pc上测试是没问题的,但是安卓机上面测试就会发现,设置的帧率只能在30和60帧两个数值来回跳动…
参考了unity官方文档,再配合自己打的手机包测试才知道问题所在。
如上图,设置30帧率和4帧率是一样的,设置60帧率就还是60帧率。
就此就发现一个问题:只能设置能被当前设备屏幕刷新率整除的数为帧率
例如设置为2的帧率就可以实现。
以上设置帧率都是在前提条件为:垂直同步都为0的情况下,当垂直同步不为0,那么Application.targetFrameRate这个方法将会失效,设置帧率就会没用。并且当前帧率就变成了:屏幕刷新率/垂直同步数值 = 当前游戏帧率
比如说设置为2
就会出现上图中当前刷新率为60./垂直同步值2=帧率30。
差不多就是这样的,先记录一下这个坑==
2023-3-15记录修改:
最近发现另外一个坑,打包的时候,关掉Optimized Frame Pacing,就可以设置自定义帧率了,哪怕你是60HZ刷新率的设备,设置45帧率也是可以成功的…,官方文档竟然没有说明…,真是坑啊