建设银行官方网站,4399网页游戏开服表,上海建科建设监理网站,天津和平做网站贵吗性能优化之资源优化 资源优化性能关键检测流程。浅析一下基于Unity3D 美术规则约束一、模型层面二、贴图层面三、动画层面四、声音层面#xff1a;#xff08;音频通用设置#xff09;五、UI层面#xff1a; 题外点#xff1a;诚然在优化中#xff0c;美术占比是很重要的… 性能优化之资源优化 资源优化性能关键检测流程。浅析一下基于Unity3D 美术规则约束一、模型层面二、贴图层面三、动画层面四、声音层面音频通用设置五、UI层面 题外点诚然在优化中美术占比是很重要的所以咱们从理论上再来理解一下美术制作流程。 资源优化
我们都知道制作游戏应用性能优化总是老生常谈的问题。也许我们可能会从CPU复杂的计算、物理模拟、GPU过多的顶点计算等入手定位考虑但是真正落实的优化还得从项目具体情况决定并且在优化过程中我们需要懂得善用工具如Unity Profiler、UWA、URP等相关性能工具。另外我们还得远离那些奇怪的想法觉得性能优化应该是属于游戏应用的最后一道环节所以导致在实际项目优化时会感觉特别的痛苦和无力例如优化中涉及美术资源的修改的而美术资源一旦涉及需要修改就相当于面临资源重做的成本所以项目优化应该从项目立项需求设计、资产制作环节、架构设计等环节就开始, 并尽早验证核心玩法性能才能成就出一款优质的应用产品。
性能关键检测流程。 浅析一下基于Unity3D 美术规则约束
一、模型层面
1、模型比例严格遵循模型与模型之间模型场景之间的比例要正确统一单位和比例模型坐标统一为原点。 2、减面操作主要是去掉对模型造型没有影响的⾯⽤尽可能少的⾯数表达清楚模型的结构和造型。⽐如物件⾮关节点及物件背⾯、内部不会看见的⾯删掉。 3、减少模型顶点的数量模型顶点的数量会影响GPU的性能所有物体不超过20000个三角面人模模型面数控制在3000-4000面移动端单个人体骨骼数量控制在30个50个左右。 4、合并模型合并同⼀⼩范围内的⾮交互类的静态⼩物件同时合并⼩物件的贴图。这样可以减少Draw Call的数量。如⼀组不同⼤⼩的⼩草⼀组⼤⼩形状不同的⽯头⼀个书架和上⾯放置的很多书籍等。把这些⼩物件合并成⼀个Object贴图也合成成⼀张贴图。 5、模型的重复利⽤相同的多个物件在Unity内复制使⽤复制的多个物体在引擎计算上算⼀个物体。但也不可复制太多个太多会对内存带来很⼤压⼒。相同的物件太多建议把⼏个合并成⼀组做为⼀个Object多做⼏组再进⾏复制。 6、减少模型UV接缝和硬边的数量。 7、减少Material的数量实际上一个模型至少需要一张贴图如果可能可以将多张贴图拼成一张贴图这样多个模型可以共享同一个Material。 8、尽可能减少像素灯光、阴影、反射的使用这些功能会导致模型被渲染多次加重CPU的负担。 9、地形优化如果是⽤unity⾃带的地形⼯具制作的地形可以⽤T4M插件转化成T4M格式地形设置⼀个顶点值转化后可以对地形优化很多。T4M也可以设置Lod模型。 10、FBX资源中有太多的顶点, 请检查是否必要Custom Parameters: VertexCountLimit : 500顶点数一般限制为500在满足美术效果下尽量减少顶点数。 11、检查文件Mesh读/写标记默认关闭。 12、资源根据国内标准参考UWA低端、中端、高端设备建议总面数控制在30w, 40w ,50w。Unity手游性能白皮书
二、贴图层面
1、贴图⼤⼩在移动设备上的贴图最⼤要控制在1024和512⼤⼩可少量使⽤2048⼤⼩的贴图以1024、512⼤⼩贴图为主其他非主图例如法线、遮光、自发光图可以设定更小。 2、重复贴图的使⽤⼤⾯积相同材质使⽤1-3种贴图交替重复覆盖通过光影变化打破贴图的重复感。 3、贴图使用Bitmap贴图类型尺寸主要为2的N次方。检查Inspector - Advanced - Non-Power of 2选项. 建议使用原始大小为2的幂次的贴图。大小非2的幂次的纹理资源将无法使用ETC1和PVRTC压缩格式。在导入时自动伸缩为2的幂次也可能会导致内存占用或者贴图质量问题。 4、少用透明贴图能不⽤就不要⽤。透明贴图⾮常消耗GPU资源。并且带Alpha通道的贴图存储为tga或者png格式在命名时必须加_al以区分。 5、贴图压缩对贴图进⾏PVRTiOS或是ETCAndroid格式的压缩可以减少⼤量内存消耗。建议场景的材质可以⽤Substance材质系统转成.sbsar 格式材质。 Substance材质可以⼤⼤压缩贴图数据的⼤⼩但不损失贴图质量。 6、检查Mipmap标记检查Inspector - Advanced - Generate Mip Maps选项未压缩的纹理资源启用Mipmap标志会增加内存占用。 应用限制未压缩的纹理资源应该禁用mipmap。类型为Sprite的纹理资源应当禁用mipmap。Mipmap 会增加游戏包体的大小和占用一定量的内存但在游戏中Mipmap的渲染可以减少显存带宽降低渲染压力随着相机的推远贴图会随之切换成低像素的体贴从而节省资源开支。过的Mipmap使用会对内存造成很大压力因此建议只对大物件设置Mipmap。 7、检查纹理读/写标记检查Inspector - Advanced - Read/Write Enabled选项默认必须要关闭开启纹理资源的读/写标志会导致双倍的内存占用。8、检查纹理资源的过滤模式检查Inspector - Filter Mode选项纹理的过滤模式一般不建议使用Trilinear会占用较高的计算资源。
三、动画层面
1、动画资源压缩方式 查看Inspector - Animation Tab - Anim. Compression选项动画资源使用最佳压缩方式可以提高加载效率。 off表示不采用压缩处理。keyfram Reduction使用关键帧进行处理旧版本unitykeyframreduction and compression表示关键帧减少和压缩。Optimal新版本unity自动选择一个最优的压缩方式。 2、检查动画资源的Optimize Game Objects选项查看Inspector - Rig Tab - Optimize Game Objects选项动画资源应该勾选Optimize Game Objects选项来减少CPU消耗。
3、动画帧率、帧数控制一般情况下每秒10帧一个动画在1秒内完成。 4、动画模型的命名统一为基础模型名字➕➕动画前缀anim_动画名字做统一规范同时会把该动画自动命名为后面的名字。命名全部用英文或者拼音并统一小写不能出现中文。例如机器人待机动画导出带动画骨骼的FBX文件提供给技术C_RobotQanim_daiji。这样在Unity可以自动规范好anim clip 名称。
四、声音层面音频通用设置
Force To Mono这个选项作用是强制单声道很多声音为了追求质量会设置成双声道导致声音在包体和内存中占用的空间加倍但是95%以上的声音两个声道是完全一样的数据。因此对声音不是很敏感的项目建议勾选此项来降低内存的占用。 Compression Format不同的平台有不同的声音格式的支持IOS对MP3有硬件支持Android暂时没有硬件支持。建议IOS适合使用ADPCM和MP3格式Android适合使用Vorbis格式。 Load Type检查Inspector - (Platform Tab) - Load Type选项音频加载类型决定声音在内存中的存在形态 Decompress On Load当Audio Clip被加载时解压声音数据适用于小型音频文件 200kb Compressed In Memory声音数据将以压缩的形式保存在内存当中适用于中型音频文件 200kb Streaming从磁盘读取声音数据适用于大型音频文件例如背景音。注例如Decompress On Load要求文件必须小于200kb因为内部内存管理的问题如果是大于200kb的文件那么也还是只会被分配到不足200kb的内存。 Bitrate可以对音频文件本身进行压缩降低文件的比特率bitrate前提音频品质不会被破坏太严重。
五、UI层面
1、UI的隐藏可以使用将其移到Canvas外的方法而不是SetActive(false)的方法来隐藏。 2、UI的批处理如果UI元素会改变数值或是位置会影响批处理导致向GPU发送更多的drawcall。因此建议将更新频率不同的UI放在不同的Canvas上。相同Canvas中的UI元素的Z值要相同这样才不会打断批处理。相同Canvas中的UI元素要使用相同的材质和纹理材质或着色器可以有动态变换例如一些特效这不会影响批处理。相同Canvas中的UI元素要使用相同裁剪矩阵。 3、Graphic Raycaster 该组件是用来处理输入事件默认挂载在每个Canvas上。有时不能互动的对象仍是canvas中的一部分并附带了该组件所以当每次鼠标或触控点击时系统就要遍历所有可能接受输入事件的UI元素就会造成多次的 点落在矩形中的检查来判断对象是否该作出反应。在UI很复杂的情况下这个运算成本就会很高。因此建议确保只有可互动的Canvas才有该组件节省CPU运行时间。 4、全屏UI的处理游戏中可能会有些全屏UI例如一些设置界面会遮挡住场景物体或其他UI元素。然而它们即使被遮挡看不见CPU和GPU还是会有消耗因此建议3D场景完全被遮挡的话关闭渲染3D场景的摄像机。被遮蔽的UIDisable这些Canvas注意不是SetActive(false。尽可能的降低帧率因为这些UI一般不需要频繁刷新。
题外点诚然在优化中美术占比是很重要的所以咱们从理论上再来理解一下美术制作流程。
次世代Next Generation与传统游戏相比次世代游戏是把次世代游戏开发技术融入到现代游戏之中通过增加模型的面数和贴图的数据量并使用次世代游戏引擎改善游戏的画面效果。标准表现在模型达到高精度高模 、PBR流程的采用真实法线高光贴图在真实光照下表现质感属于新的游戏引擎技术。 PBRPhysically Based RenderingPBR就是一种基于物理渲染通过对真实世界物理现象进行逼近、模拟、再现使3D对象在不同环境下都能展现出逼真的渲染质感并通过材质的参数化将材质制作这一手工业流程转化成为标准化、流水化的工业流程。 优秀的资源链接分享 1、Unity 官方Profilerhttps://docs.unity3d.com/Manual/ProfilerMemory.html Unity URPhttps://upr.unity.cn 2 、UWA相关 2.1 使用UWA GOT优化Unity性能和内存https://blog.uwa4d.com/archives/2029.html 2.2 可试用的产品介绍https://blog.uwa4d.com/archives/UWA_PipelineV2-4.html 2.3 pipeline产品的介绍https://blog.uwa4d.com/archives/UWA_Pipeline42.html 2.4 本地资源检测相关介绍https://blog.uwa4d.com/archives/UWAGOTOL_Summary.html 2.5 GOT Online相关介绍https://www.uwa4d.com/demo/projects.html 3、Unity 资源相关 3.1 Unity 优化实践学习(二) 资源优化https://blog.csdn.net/dengshunhao/article/details/82663719 3.2 Unity场景美术资源优化https://blog.csdn.net/weixin_34203832/article/details/92379182 3.3 Unity整体性能优化篇 第(二)节-Unity资源优化https://blog.csdn.net/chongzi_daima/article/details/101381290 4、Unity渲染技术http://imgtec.eetrend.com/blog/2020/100050575.html 5、如何使用 Unity 和 Arm 分析工具解决移动端游戏性能问题上篇https://mp.weixin.qq.com/s/968NoWRjcV2rNYH51Mbfqg 6、全新Arm Mobile Studio for Unity软件包增强移动端性能分析https://developer.unity.cn/projects/60e2a5f9edbc2a04cfc5e341 7、Unity 性能优化经验整理https://segmentfault.com/a/1190000019844821?utm_sourcetag-newest 8、LuaProfilerhttps://github.com/leinlin/Miku-LuaProfiler 9、Memory Profilerhttps://docs.unity3d.com/Packages/com.unity.memoryprofiler0.7/manual/index.html https://www.bilibili.com/video/av334941622 10、垃圾回收https://docs.microsoft.com/zh-cn/dotnet/standard/garbage-collection/fundamentals 11、Lua引用 https://github.com/jxhgzs/LuaMemorySnapshotDump 12、【Unity项目优化】之根据UPR资源检测报告进行项目资源优化总结https://blog.csdn.net/qq_42437783/article/details/124275092