广州unity3d培训
达内广州CBD中心

18087159764

热门课程

【广州达内培训】Unity3D技术的应用和开发设计

  • 时间:2017-04-28
  • 发布:广州unity3d培训
  • 来源:广州unity3d培训

广州达内

接下来大家就和广州的达内 unity3D培训的小编一起来看看关于这方面的技术开发和知识吧!我想对大家的帮助一定会很大的。

最简单的优化建议:

1.PC平台的话保持场景中显示的顶点数少于200K~3M,移动设备的话少于10W,一切取决于你的目标GPU与CPU。

2.如果你用U3D自带的SHADER,在表现不差的情况下选择Mobile或Unlit目录下的。它们更高效。

3.尽可能共用材质。

4.将不需要移动的物体设为Static,让引擎可以进行其批处理。

5.尽可能不用灯光。

6.动态灯光更加不要了。

7.尝试用压缩贴图格式,或用16位代替32位。

8.如果不需要别用雾效(fog)

9.尝试用OcclusionCulling,在房间过道多遮挡物体多的场景非常有用。若不当反而会增加负担。

10.用天空盒去“褪去”远处的物体。

11.shader中用贴图混合的方式去代替多重通道计算。

12.shader中注意float/half/fixed的使用。

13.shader中不要用复杂的计算pow,sin,cos,tan,log等。

14.shader中越少Fragment越好。

15.注意是否有多余的动画脚本,模型自动导入到U3D会有动画脚本,大量的话会严重影响消耗CPU计算。

16.注意碰撞体的碰撞层,不必要的碰撞检测请舍去。

1.为什么需要针对CPU(中央处理器)与GPU(图形处理器)优化?

CPU和GPU都有各自的计算和传输瓶颈,不同的CPU或GPU他们的性能都不一样,所以你的游戏需要为你目标用户的CPU与GPU能力进行针对开发。

2.CPU与GPU的限制

GPU一般具有填充率(Fillrate)和内存带宽(Memory Bandwidth)的限制,如果你的游戏在低质量表现的情况下会快很多,那么,你很可能需要限制你在GPU的填充率。

CPU一般被所需要渲染物体的个数限制,CPU给GPU发送渲染物体命令叫做DrawCalls。一般来说DrawCalls数量是需要控制的,在能表现效果的前提下越少越好。通常来说,电脑平台上DrawCalls几千个之内,移动平台上DrawCalls几百个之内。这样就差不多了。当然以上并不是绝对的,仅作一个参考。

往往渲染(Rendering)并不是一个问题,无论是在GPU和CPU上。很可能是你的脚本代码效率的问题,用Profiler查看下。

关于Profiler介绍:

需要注意的是:

在GPU中显示的RenderTexture.SetActive()占用率很高,是因为你同时打开了编辑窗口的原因,而不是U3D的BUG。

4.针对CPU的优化——减少DRAW CALL 的数量

为了渲染物体到显示器上,CPU需要做一些工作,如区分哪个东西需要渲染、区分开物体是否受光照影响、使用哪个SHADER并且为SHADER传参、发送绘图命令告诉显示驱动,然后发送命令告诉显卡删除等这些。

假设你有一个上千三角面的模型却用上千个三角型模型来代替,在GPU上花费是差不多的,但是在CPU上则是极其不一样,消耗会大很多很多。为了让CPU更少的工作,需要减少可见物的数目:

a.合并相近的模型,手动在模型编辑器中合并或者使用UNITY的Draw call批处理达到相同效果(Draw call batching)。具体方法和注意事项查看以下链接:

Draw call batching :

b.在项目中使用更少的材质(material),将几个分开的贴图合成一个较大的图集等方式处理。

如果你需要通过脚本来控制单个材质属性,需要注意改变Renderer.material将会造成一份材质的拷贝。因此,你应该使用Renderer.sharedMaterial来保证材质的共享状态。

有一个合并模型材质不错的插件叫Mesh Baker,大家可以考虑试下。

c.尽量少用一些渲染步骤,例如reflections,shadows,per-pixel light 等。

d.Draw call batching的合并物体,会使每个物体(合并后的物体)至少有几百个三角面。

假设合并的两个物体(手动合并)但不共享材质,不会有性能表现上的提升。多材质的物体相当于两个物体不用一个贴图。所以,为了提升CPU的性能,你应该确保这些物体使用同样的贴图。

3.关于顶点数量和顶点计算

CPU和GPU对顶点的计算处理都很多。GPU中渲染的顶点数取决于GPU性能和SHADER的复杂程度,一般来说,每帧之内,在PC上几百万顶点内,在移动平台上不超过10万顶点。

CPU中的计算主要是在蒙皮骨骼计算,布料模拟,顶点动画,粒子模拟等。GPU则在各种顶点变换、光照、贴图混合等。

【个人认为,具体还是看各位的项目需求,假设你项目的是3D游戏。你游戏需要兼容低配置的硬件、流畅运行、控制硬件发热的话,还要达到一定效果(LIGHTMAP+雾效),那么顶点数必定不能高。此时同屏2W顶点我认为是个比较合适的数目,DRAWCALL最好低于70。另,控制发热请控制最高上限的帧率,流畅的话,帧率其实不需要太高的。】

那么看了上面的这些内容你是不是对unity3D知识更感兴趣呢?如果你想从事这方面的开发,那么就来广州unity3D培训机构进行更多的学习和开发吧!广州unity3D达内培训机构欢迎你!

上一篇:【广州达内】未来unity3d的发展潮流—又会以什么样的方式出现呢?
下一篇:【广州unity3D培训 达内培训】Unity3D开发技巧,如何避开开发中的坑?

干货|广州达内:Unity引擎360度无死角全解,你都知道吗?

广州Unity3D培训:必胜客携手网易《阴阳师》手游展开跨界合作

【广州达内培训】在Unity中使用uGUI绘制自定义图形

Unity3D技术—iTween基础之Scale

选择城市和中心
贵州省

广西省

海南省