• Unity性能优化的N种武器


    贴图

    l  控制贴图大小,尽量不要超过 1024 x1024;

    l  尽量使用2的n次幂大小的贴图,否则GfxDriver里会有2份贴图;

    l  尽量使用压缩格式减小贴图大小;

    l  若干种贴图合并技术;

    l  去除多余的alpha通道;

    l  不同设备使用不同的纹理贴图,分层显示;

     

    模型

    l  尽量控制模型的面数,小于1500会比较合适;

    l  不同设备使用不同的模型面数;

    l  尽量保持在30根骨骼内;

    l  一个网格不要超过3个material;

     

    动画

    l  N种动画压缩方法;

    l  尽量减少骨骼数量;

     

    声音

    l  采用压缩MP3 和 wav;

     

    资源方面的优化

    l  使用 Resource.Load 方法在需要的时候再读取资源;

    l  各种资源在使用完成后,尽快用Resource.UnloadAsset和UnloadUnusedAsset卸载掉;

    l  灵活运用AssetBundle的Load和Unload方法动态加载资源,避免主要场景内的初始化内存占用过高;(实现起来真的很难…)

    l  采用www加载了AssetBundle后,要用www.Dispose 及时释放;

    l  在关卡内谨慎使用DontDestroyOnLoad,被标注的资源会常驻内存;

     

    代码的优化

    l  尽量避免代码中的任何字符串连接,因为这会给GC带来太多垃圾;

    l  用简单的“for”循环代替“foreach”循环;

    l  为所有游戏内的动态物体使用内存对象池,可以减少系统开销和内存碎片,复用对象实例,构建自己的内存管理模式,减少Instantiate和Destory;

    l  尽量不使用LINQ命令,因为它们一般会分配中间缓器,而这很容易生成垃圾内存;

    l  将引用本地缓存到元件中会减少每次在一个游戏对象中使用 “GetComponent” 获取一个元件引用的需求;

    l  减少角色控制器移动命令的调用。移动角色控制器会同步发生,每次调用都会耗损较大的性能;

    l  最小化碰撞检测请求(例如ray casts和sphere checks),尽量从每次检查中获得更多信息;

    l  AI逻辑通常会生成大量物理查询,建议让AI更新循环设置低于图像更新循环,以减少CPU负荷;

    l  要尽量减少Unity回调函数,哪怕是空函数也不要留着;(例如空的Update、FixedUpdate函数)

    l  尽量少使用FindObjectsOfType函数,这个函数非常慢,尽量少用且一定不要在Update里调用;

    l  千万一定要控制mono堆内存的大小;

     

    摘自《腾讯大咖说:腾讯是如何做Unity手游性能优化的》

    原文地址:http://wetest.qq.com/lab/view/108.html

  • 相关阅读:
    正则表达式点滴
    异步处理与界面交互
    关于利用VS2008创建项目遇到的小困惑备忘
    using App.cofig to Store value
    Castle ActiveRecord学习笔记三:初始化配置
    无服务器端的UDP群聊功能剖析
    为VS2010默认模板添加版权信息
    理论有何用?不问“何用”,先问“用否”!
    微软没有公开的游标分页
    那些满脑子只考虑后台数据库的人他整天研究的就是针对自己查询一些数据的sql语句
  • 原文地址:https://www.cnblogs.com/fws94/p/6367471.html
Copyright © 2020-2023  润新知