Unity Assets 笔记:

视频: https://www.bilibili.com/video/BV1Wv41167i2?from=search&seid=14522483669421657296

Assets 的产生方式

  • MAYA (3D 模型) 、PS(图片)、 音效、Unity (prefab)

  • meta 文件 和 prefab 文件

    • prefab 是文件信息数据,meta 是文件的补充信息数据
    • YAML 格式数据文件
    • YAML 是和JSON、XML 一样的数据文件格式 ,具有自引用的特点
    • 可以通过修改.prefab 或者meta 的方式来修改frefab 的状体
  • Unity 中的资源无论是什么格式怎么设置,都不会改变源文件 而是在Libiary 中生成对应平台的文件

    • 音效文件在工程中使用wav 无损文件比较好
    • Libiary 中编译速度
    资源导入在Libiary 编译2中方式

Assets 技巧

  • 在项目Assets目录中,文件名末尾带'~'的不会被编译
  • 如果文件夹名称为:hide~ 则改文件夹不会被编译

AssetBundle

  • 原理

    • AssetBundle 就是一种压缩包,是Unity的一种虚拟文件系统
    • 既然是一种文件压缩格式为什么部用文件读写,为什么还要用真么复杂的东西管理呢?
      • AssetBundle 可以管理文件引用关系
      • 跨平台考虑
    • 既然AssetBundle 是一种压缩文件 所以像一般的压缩文件格式一样大致包含2部分:
      • 头文件(立即加载
      • 内容 (按需加载
  • 生成AssetBundle

    • 正常打AssetBundle 所有信息全部打进 AssetBundle 包中(Bundle 文件大)
    • 打Bundle 文件时 关闭TypeTree (Bundle 文件小,占内存少)

    TypeTree 是什么,干什么用的?什么时候可以关闭,什么时候必须开启?

    • TypeTree 是Unity 内部为了兼容不同版本打出的AssetBundle 文件 额外生成的一部分标识文件
    • 如果我们保证是同版本打包并发布 则不需要开TypeTree,如果打包AssetBundle 和 发布不是一个版本则需要TypeTree 避免Unity 编译时报错
    • TypeTree 是AssetBundle 跨版本兼容文件
  • 打包策略
    一个AssetBundle 多大合适,这个要根据使用的场景决定,移动设备的网络状况 其实和台式设备比试比较偏差的。所以决定了如果需要网络下载AssetBundle 则文件不能太大。
    另外 AssetBundle是一种压缩格式,所以要注意 头文件内容 之间的分配

    • 结论:
      • 需要网络下载 1M~2M
      • 本地使用 5M~10M
  • 加载

    • profiler 使用时注意:
      • 运行时 资源是按需加载
      • 编辑器环境下 优先保证Unity的流畅性
        所以查看性能时需要真机查看,比较准
    • 序列化 和 反序列化
      • 运行时尽量使用prefab
      • 使用prefab 对于 内存和 Runtime 相对于普通物体都有提升
    • 同步 和 异步
      • 同步(快,但是主线程会卡, 可以采用分针同步)
      • 异步 (尽量不卡(有可能会卡),至少比同步慢一帧)
      • 同步和异步同时使用会出现问题
      • 资源加载unity中 2个重要的管理类
        • PreLoad 和 Presisten
          • PreLoad 任务调度(生成)
          • Presisten 是 从磁盘读取 文件,分配 Id(这个必须locked)
unity内部资源加载.png
  • 卸载
    • UnLoadUnusedAssets
      • Secen 会自动调用
      • 不能并行
      • 同步执行(会卡顿)
    • AssetBundle.UnLoad
      • AssetBundle.UnLoad(true) Assetbundle 和资源全部卸载
      • AssetBundle.UnLoad(false)只卸载Assetbundle

你可能感兴趣的:(Unity Assets 笔记:)