[学习笔记]、游戏引擎开发部分资源优化归纳

3DMax中:

    输出模型:1、制作 2、复位XForm 3、转poly 4、如果模型显示错误--》加Normal 5、转poly 6、输出

    导出面板:如果需要导出不带动画的模型 Export只需勾选Geometry
          带动画勾选Geometry以及(Animation、Skins、Shpes、Geometry used)四个 与动画相关的组件

    unity支持的动画:
        1.关键帧动画    2.骨骼动画 双足     3.CAT 多足(3DMax的插件)
        4.任意类型动画    动画-》点缓存-》关键帧动画

DrawCall:
    每帧每次CPU准备顶点及其相关数据通知图形学的过程 一个

动态批处理 Dynamic Batching
满足动态批处理:顶点数 < 300
        和!材质!    shader中使用的Pass数有关(单个材质着色器pass数为1)
        使用多维子材质的 两个物体之间距离不能太远(不使用多维子材质就行)
        所有静态物体不能参与批处理
        使用MeshRenderer组件渲染的物体

        模型旋转角度过大 位移距离过大会影响动态批处理
        Unity不同版本 对物体的缩放比例会影响动态批处理

静态批处理 Static Batching
满足静态批处理:静态物体
        顶点数<20000
        使用MeshRenderer组件渲染的物体

贴图格式:
jpg        有损压缩  文件小  不支持透明    
png   移动    无损压缩  文件小  支持透明
tga           无损压缩  文件大  支持透明
dds   pc 主机    无损压缩  文件最小 支持透明(IOS不支持)

使用VS时 不能使用管家或者助手软件 影响同步

贴图打组,图集:使贴图满足2^n     减少DrawCall

贴图尺寸:
    2^n     n>=1    移动端上限2048*2048 PC端上限4096*4096  PCVR上限8096*8096 unity中
    客户端:(DXT1/5)    
    移动端贴图 最好2M以内 不大于5M    在unity外使用无损压缩软件(百度搜索关键词“证件压缩”)    
    IOS平台        必须使用正方形2^n贴图    (PVRTC)
    Android平台    不透明RGB ETC 8bits (必须支持OpenGLES2.0)
            透明RGBA ETC2 8bits(必须支持OpenGLES3.0)(首选)
                    
            RGBA 32bits 所有安卓手机都支持 (缺点:大)

unity版本号X.X.X  最后两个X要都大于等于3  不然有BUG

移动端尽量减少LOD使用量(会一次加载所有资源以及贴图)

MipMaps减少CPU运算量 内存最廉价 多占用33%内存 克隆六张图 移动端不建议使用(3G内存以下)
    UI贴图不需要开MipMaps    与摄像机距离保持不变

模型、图片优化:Read/Write Enable 选项如果勾选 会在内存中拷贝一份 以供读改 不改模型则不勾选

声音优化:推荐使用MP3格式    android平台推荐Vorbis格式 体积比mp3小
      在声音属性中 勾选ForceToMono 可去除一条音轨 减小内存

渲染优化:摄像机视距、视野角度适当调小
          
光优化:烘焙贴图会全部加载到内存中 渲染出来的烘焙贴图占用显存
    烘焙贴图也需要优化

unity用的物理引擎是英伟达的(NVIDIA)

Edit面板Project Setting选项下:
    Physic设置层之间碰撞
    Time设置FixedUpdate调用时间  一般设置为0.033 每秒调用30次

NGUI注意事项:
    Depth值 背景设置为0 且不能有负值 不能通过代码修改(Depth值有BUG)
        一级:1-30
        全屏触发器:31
        二级:32-60
        ....
    同图集的Panel要相邻 才能一起处理 一级界面的Panel最好相同为1
    移动位置比设置显隐更优化
    
发布时的签名:    com.公司.产品
        只要不是默认的就行
        至少要有com.    

协程:
    如果StartCoroutine前没有yield return,则只执行一帧的内容(其他内容等待执行),然后往下顺序执行
    如果有yield return,则执行完再往下继续执行(如果其他线程的等待时间到了则先执行其他线程)
            
游戏开发中:开发效率比性能优化重要


***配置文件:
    StreamingAssets里的文件在移动端只可读不可改
    **所有配置文件统一放在StreamAssets目录下才能发布出去
    移动端只有PersistentDataPath路径可写
    记事本配置文件的编码格式必须是UTF-8

发布平台之前:切换平台,Build资源

Json数据分为Json对象和Json数组
    解析时执行.ValueAsString方法后不能转成整型 取不到值 必须用.ToString

Plugins(插件路径)(必须是Assets文件夹的一级子目录)目录放:
        Windows的dll文件(动态链接库)、Linux的so文件(共享函数库)、Android/Ios 的so,jar,.m文件
        原因:优先编译
Windows平台使用数据库
    1.在Assets目录下创建Plugins目录,将Mono.Data.Sqlite.dll/System.Data.dll/sqlite3.dll三个文件放到工程
    sqlite3有32 64 两个版本 发布时注意版本匹配

Pluginsm目录下
    数据库打开之后一定要关闭,不然可能被锁死
    数据库表单中插入字符串用text类型 输入的字符串前后加单引号
发布时如果dll文件出问题:发布设置中Optimization中ApiCompatibilityLevel修改为.NET 2.0

如果要将工程导入更新版本的unity,在工程目录下把除Assets以外的目录全部删除

FPS相关:性能优化、移动端散热、电量

unity/Edit/Project Settings/Quality里面V Sync Count: (帧率)
    第一项:不自动匹配
    第二项:自动硬件上限匹配
    第三项:自动硬件上限除以二
(内存占用+烘焙贴图+显存溢出返回到内存中)=实际内存占用

场景叠加时navmesh资源不会叠加,必须先加载有navmesh资源的场景

地形资源展开必须只能是一张图、地形长宽不要设置过高

联网通讯:下载BestHttp插件 实现弱联网、强联网
常用shader:ShaderForge插件

发布了10 篇原创文章 · 获赞 1 · 访问量 257

猜你喜欢

转载自blog.csdn.net/Qsouler/article/details/104201695
今日推荐