Unity游戏安卓包运行卡的原因? Mono
{
首先来了解一下Mono虚拟机。
Unity将游戏运行在一个Mono虚拟机上,所以能实现跨平台的功能。
但是由于有Mono虚拟机的存在所以我们实际打出来的包=(游戏+mono),所以Unity打出的包会很大。
}
Profiler
{
可以查看很多性能有关的
}
DrawCall
{
DrawCall:就是cpu对图形绘制接口调用,cpu通过调用图形库接口,命令GPU进行渲染操作。一次调用就是一次DrawCall。所以如果调用次数多的话就会大量占据GPU的性能消耗。
DrawCall与性能:其实DrawCall造成的性能问题的元凶是cpu。因为cpu是发送命令的始作俑者,cpu发送一个渲染命令之后,GPU立即执行渲染命令绘制图形,等到渲染命令结束之后,cpu才可以继续发送下一个渲染命令。最耗费性能的原因是,cpu还要进行很多准备工作,检测渲染状态,提交渲染所需的数据,提交渲染所需要的状态。GPU渲染很快就能处理完,但DrawCall过多会导致cpu有很多额外的开销用于准备工作,cpu本身负载而GPU可能闲置了。 打个比方:拷贝1000个总大小1m的文件和单个大小为1m的文件,,明显1000个慢很多,DrawCall也是这个原理。
减少DrawCall:
我们可以打开Unity的Profiler面板查看Rendering下的DrawCall。可以发现Draw根据物体的种类的增多而增多,而不取决与数量
}
UnityStatistics统计面板
{
FPS:每秒帧数,表示渲染引擎处理一个渲染帧所花费的时间,时间越短fps就越长,人眼去看就越流畅。一般要让游戏保持肉眼可见的流畅度需要保持在30帧以上
cpu:计算每一帧需要花费的时间。越低说明计算越快。
render thread:渲染图片所需要的时间。越低越快。
Batches:可以看做是对Draw的合并的箱子,同材质或 Shader 的物件,可以合并成一个 Batch 送往 GPU。多个DrawCall可以视为一个Batch,一个Batch中包含多个DrawCall,节省了一部分cpu提交数据的操作。
Verts:顶点个数
Tris:三角面个数
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。