作为该系列的第二篇文章,今天将给大家分享一下,Unity最资深的团队是如何设置物理、UI和音频的。希望可以帮助大家最大限度的使用Unity引擎。
第一篇给大家介绍了如何提高资源、项目配置和图形的性能,感兴趣的朋友千万不要错过了。
文章链接如下:
顶级工程师教你移动端游戏性能优化!Unity官方教程!
一、物理
在移动设备上,Unity内置的物理系统比较吃性能。下面的一些技巧可以帮助你优化在移动设备上的表现能力。
1、优化设置
在PlayerSettings中,选中PCM(prebake collision meshes)。同时编辑Physics设置,简化Layer Collision Matrix。
启用 Prebake Collision Meshes
2、启用Reuse Collision Callbacks
修改物理项目设置以进一步提高性能。
同时,需注意Profiler中的物理模块性能是否有问题。
3、简化碰撞体
可以使用原始碰撞体或者是网格碰撞体来替代更为复杂的网络碰撞体。
使用原始或简化网格来表示碰撞体。
4、使用物理方法移动刚体
使用MovePosition或者AddForce来移动Rigidbody对象。如果直接转化组件可能会导致重新计算物理时间,特别是在复杂的场景中,会吃更多的计算机性能。
5、修改固定的时间间隔
因为在Project Settings中默认的Fixed Timestep是50hz(0.02)。这时候可以根据目标的帧率进行改动(比如,把60FPS设置0.06)。
如果Unity每帧都要多次使用Fixed Update,很可能会拉高你的CPU频率,从而造成一些性能问题。
这时候可以对帧率下降时的物理计算和FixedUpdate事件所使用的时间进行适当限制,减少计算机性能波动时的帧率影响。
6、通过Physics Debugger实现可视化
使用Physics Debug窗口帮助故障检查有问题的碰撞体或者其他情况。
二、用户UI界面
UGUI想必大家都不陌生,一般来说性能出问题,第一个就是查看它。所以,在我们日常使用的时候,一定要注意以下因素。
1、区分画布
根据UI元素的更新频率,区分这些元素。把静态的UI元素单独保留,将同时更新的动态元素保留在字画布上。一定要确保每个画布中的UI元素都有一样的材质。纹理和Z值。
2、禁用Raycast Target
在不需要使用Raycast Target的UI文本或者图像上禁用该功能。
禁用 Raycast Target。
3、避免大量使用重叠元素
对大量的UI元素(如卡牌游戏中堆叠的卡牌)分层会造成过度绘制。自定义代码在运行时将分层元素合并到更少的元素和批次中。
4、使用多种分辨率和宽高比
现在移动手机的分辨率和屏幕大小各不相同,这时候可以创建不同的UI版本,按设备提供最佳体验。
设备模拟器:https://docs.unity3d.com/Manual/com.unity.device-simulator.html
使用设备模拟器预览各种屏幕格式。
5、使用全屏 UI 时,隐藏其他内容
如果发暂停屏幕或者启动屏幕的时发现其他场景被遮住了,这时候可以禁用摄像机对3D场景的渲染。同时,禁用隐藏在顶层画布之后的所有背景画布元素。这时候可以考虑在全屏UI中降低Application.targetFrameRate。
6、音频
通常情况下音频不会造成性能瓶颈,但是也可以通过优化节省内存。
7、尽量使用单声道声音剪辑
如果要使用3D音频,可以启用Force To Mono,或者用单声道创作声音。
8、压缩剪辑并降低压缩比特率
对大部分的声音使用Vorbis,对常用的短音(如枪声、脚步声)使用ADPCM。移动设备音效上限是22050Hz,降低设置一般来说影响很小。
9、从内存中卸载静音的音频源 (AudioSources)
当使用静音时,直接取消AudioSource组件,直接从内存中卸载。
以上所有教程均来自Unity官方,如有兴趣了解可以去Unity中文官网查看。
·END·
扫描二维码
⬇️
添加助教老师
⬇️
免费领取游戏策划4天训练营!
⬇️