对于游戏来说,流畅是最重要的条件,所以好的游戏一定会有个好的优化,个人认为unity3d游戏开发优化应从3块下手:CPU、内存、GPU
措美ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!1.Draw Calls(CPU调用底层图形接口):Draw Call Batching(动批)和Static Batching (静批)
Draw Call Batching(动批) 满足条件
1.一般大型手机游戏,双核的手机,Tris(面)最好小于2万,4核的手机最好不能超过4~5万左右
2.一般不关心模型是什么样子,也不关心是几个模型,只要这些模型的顶点数少于300个,并且用的是相同材质且是单pass的,就能参与动态批处理
3.缩放可能会影响bathces,也可能不影响,看unity版本,一般5.以后的版本不影响
4.只有Mesh Renderer的模型才支持动态批处理
5.Skinned Mesh Renderer 是骨骼或者人物蒙皮渲染,是不支持动批的
6.所有参与过灯光烘焙的物体,因为是静态的,所以不能动态批处理
Static Batching (静批)(一般能用静批的尽量用静批)满足条件
1.必须是静态(对于有没有烘焙,不关心)
2.无顶点要求
3.和shader无关(单pass或者双pass都无关),只和材质有关
4.静态物体是不支持缩放的,如果进行缩放,则不会静态批处理
移动端Draw Calls 优化:(重要)
1.建议Draw Calls 在100左右(双核处理器) ,四核处理器建议在200~300
2..物理方面(组件和引擎)
1.碰撞(调用最底层物理引擎,消耗cpu性能),优先使用box collider,尽量不用mesh collider。
2.碰撞层(不需要碰撞的层,取消打勾,这个比较重要)
3.帧数优化(移动端建议0.033,就是1秒钟30帧。pc端性能普遍较好,建议0.01)(至于VR和AR建议次数更多,这个值和fps相关联的,就这一句话,可能是VR和AR开发人员的福音。)
4.建议选择Don‘t Sync(关闭垂直同步),然后在C#游戏入口代码里面的Awake或者Start里面写上
Application.targetFrameRate = XX;(移动端建议30,PC端建议60.这个重要的不要不要的,为什么移动的帧数是30?,不深入,总之不要太高,否则消耗性能不说,cpu还会发烫)
【步骤3和4请同时操作】
3.代码优化
1.少用反射,ios开发的可以忘了反射(不是不用哈,少用)
2.务必在工程发布前删除代码里面的Debug.Log和print (重要,这2个比较消耗性能)
3.不要频繁创建或实例化或销毁对象,请使用对象池(Pool)(重要)。
4.同一脚本中频繁使用的变量建议声明其为全局变量,脚本之间频繁调用的变量或方法建议声明为全局静态变量或方法。(重要)
5.不要去频繁获取组件,将其声明为全局变量.
6.用简单的“for”循环代替“foreach”循环。
7.数组、集合类元素优先使用Array,其次是List,少用ArrayList(会拆装箱操作)。
8.在循环语句力里面,不要直接访问gameobject的tag属性。比如if (go.tag == “human”)最好换成if (go.CompareTag (“human”))。因为访问物体的tag属性会在堆上额外的分配空间。如果在循环中这么处理,会留下垃圾。
9.尽量少用模运算和除法运算,比如a/5f,一定要写成a*0.2f。
10.String的相加操作,会频繁申请内存并释放,导致gc频繁,使用System.Text.StringBuilder代替
11.Update少用,少在Update里面做循环,更少做复杂操作。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。