现象是 : 手机移动一段时间后摄像机画面才同步过来
1.xcode属性设置
在Unity减少安装包的大小总结中在xcode进行了不少设置,因此我重新发布了一个版本,只保留 舍弃架构armv7/XCode工程中将Bitcode由yes改为no (已默认为No)两项优化,重新上传,重新测试,不那么卡顿了,不清楚是哪一项优化导致
2.提高帧率
①.修改帧数
在 Edit/Project Settings/Quality 质量设置里把帧数设定关闭,关闭之后才能在代码中修改游戏运行的帧数。
在Unity中创建新脚本UpdateFrame.cs
using UnityEngine;
using System.Collections;
///
/// 功能:修改游戏FPS
///
public class UpdateFrame : MonoBehaviour
{
//游戏的FPS,可在属性窗口中修改
public int targetFrameRate = 300;
//当程序唤醒时
void Awake ()
{
//修改当前的FPS
Application.targetFrameRate = targetFrameRate;
}
}
②.根据帧率调整渲染分辨率
unity 提供了一个方法设置渲染分辨率:
Screen.SetResolution(designWidth,designHeight,true);
#if UNITY_ANDROID
int scWidth = Screen.width;
int scHeight = Screen.height;
int designWidth=720; //这个是设计分辨率
int designHeight=1280;
if( scWidth<=designWidth || scHeight<=designHeight)
return;
Screen.SetResolution(designWidth,designHeight,true);
#endif
判断平均FPS, 如果最近15帧的平均FPS低于25,就降低渲染分辨率。
private float f_UpdateInterval = 0.5F;
private float f_LastInterval;
private int i_Frames = 0;
private float f_Fps;
private const int fpsArrayLen=8;
private float[] fpsArray = new float[fpsArrayLen];
private int fpsIndex=0;
private const int standardFPS=26;
/* 再update 中执行,每隔0.5秒计算一次FPS*/
void FPSUpdate()
{
++i_Frames;
if (Time.realtimeSinceStartup > f_LastInterval + f_UpdateInterval)
{
f_Fps = i_Frames / (Time.realtimeSinceStartup - f_LastInterval);
i_Frames = 0;
f_LastInterval = Time.realtimeSinceStartup;
fpsArray[fpsIndex]=f_Fps;
fpsIndex=(++fpsIndex)%fpsArrayLen;
}
}
/*判断时候达到了标准的FPS*/
private bool IsStandFPS()
{
float totalFPS=0;
for(int i=0;i
帧 Frame : 视频或者动画中的每一张画面,而视频和动画特效就是由无数张画面组合而成,每一张画面都是一帧。
帧数 Frames : 帧数其实就是为帧生成数量的简称,可以解释为静止画面的数量,如果一个动画的帧率恒定为 60 帧每秒(fps),那么它在一秒钟内的帧数为 60 帧,两秒钟内的帧数为 120 帧。
值得说的是对于我们大多数手机视频拍摄能力,无论是 720P 还是 1080P 基本都只有 30 帧每秒,因为这个将涉及到手机 GPU 图形处理器的能力和存储能力,这都是受手机硬件条件的影响,当然一些手机也可以拍出 4K 视频,甚至可以使用 135 帧每秒的超高速拍摄功能。
帧率 Frame rate : 帧率(Frame rate) = 帧数(Frames)/时间(Time),单位为帧每秒(f/s, frames per second, fps)
FPS( Frame per Second)每秒显示帧数 : FPS 是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。
FPS 是测量用于保存、显示动态视频的信息数量。每秒钟帧数愈多,所显示的动作就会愈流畅。
通常,要避免动作不流畅的最低是 30 。某些计算机视频格式,每秒只能提供 15 帧。
unity帧数设置 :
1、关掉垂直同步。
设置帧率为100
然后运行后的帧率是 100.
2、设置垂直同步为1
可以看到帧率为 60 帧左右跳动,完全无视了代码中的设定。
3、设定垂直同步为 2
可以看到帧率在 30帧左右跳动。
参考资料 :
浅谈显示技术中帧、帧数、帧率、 FPS 间有何区别?
解决Unity打包IOS项目启动时间过长——最白话,手把手教你做系列。
unity启动界面慢(黑屏)处理(二)
unity打包ios过大,ios压缩技巧
联机Unity Profile技巧
Unity 游戏帧率优化,设置分辨率
Unity3d 帧率设置 及在游戏运行时显示帧率