美文网首页
Unity Assets 笔记:

Unity Assets 笔记:

作者: 魁犸 | 来源:发表于2020-08-25 14:26 被阅读0次

    视频: 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 笔记:

          本文链接:https://www.haomeiwen.com/subject/cklnjktx.html