码迷,mamicode.com
首页 > 编程语言 > 详细

Unity官方直播--Unity Asset的一生

时间:2020-08-01 21:31:08      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:就是   系统   格式   处理   改变   pipe   组件   lazy   数字   

Unity Asset的一生

https://unity.cn/projects/zhi-bo-yu-gao-unityzi-shen-ji-zhu-zhuan-jia-gao-chuan-wei-nin-xiang-jie-unity-assetde-yi-sheng

Asset资源分为两部分:文件本身和.meta文件
  文件本身存储原始数据;对应的.meta文件存储一些unity用到的额外信息

Asset可分为两种:第三方工具产生的 和 Unity自身产生的
  第三方工具产生的,如:Maya、3DMax等;
  Unity自身产生的,如:Prefab、Script等
  这两者的.meta文件所存储的信息是不相同的

Asset可分为两种:运行时Runtime Asset 和 编辑器Editor Asset
  Runtime Asset(比如纹理、声音、动画等)在最终打包时会被打入包,被玩家直接看到
  Editor Asset,比如一些数据内容,参与编辑或生成包的过程,但是最终没有被打包

Asset导入设置:

.Meta文件:.meta文件很重要。

由第三方工具产生的资源对应的.meta文件

.meta文件

技术图片

guid:当导入一个asset时,unity会分配一个唯一id作为标识,这个标识也用于关联到Library中的对应资源

PrefabImpoter:导入管理的相关信息(也是AssetImporter处理的内容,也可在Inspector中对应看到)

.prefab文件(资源文件本身) -- (每一个Asset的数据都是这种格式)

技术图片 技术图片

YAML文件格式

000 !u!1 &4309454636272863991:
  1表示类型,比如这里是1一定表示是GameObject,下面4一定是Transform(unity内置枚举)
  4309454636272863991表示该组件的fileID

最上面是GameObject;其中的一些字段可以在Inspector面板中打开Debug进行查看
  m_Component下面有四个数据,会发现这四个数据对应的是该GameObject下挂载的四个组件自己对应的ID
  Unity找寻该fileID对应的数据段,将这个数据段填充到这个位置

实用方法:有的时候会出现script里面引用missing的情况,多数是因为.meta文件丢失后生成了新的meta导致id对不上了
  这时如果有旧版本,就可以通过fileID来重新赋值引用(有旧版本的话那也可以直接拖动赋值不是更直观嘛...在这里改数据的优势是什么,可批量化?)

诡异技巧:在打包时比如想要移除掉一些脚本,也可通过python这样处理(移除数据块和引用)

Library文件夹:所有Asset资源最终(build)都会被放入Library文件夹 -- 异常庞大的文件夹

源文件会根据unity的导出设置进行格式转换并放入Library文件夹,这也就是为什么源文件永远是那个源文件,即使导出设置改变了源文件也不变的原因

所以比如声音文件,放什么格式的最好呢,按道理wav格式是最好的,因为无损、原始采样率最高,unity导出后只进行了一次压缩;如果放的是mp3,最终音效质量就没那么好,进行了二次压缩

Library/metadata 目录下为很多这种文件夹,上面提到的guid数字就可以在这里被对应上

这里提到一个Unity现在有两种版本,在ProjectSettings -> Editor -> Asset Pipeline -> Mode 里可选Version1和Version2,
  Version1和Version2的主要区别是将很多

选择Version1时是这样的

技术图片 技术图片

比如上面guid: 368406572aed14c9da2edd5fe4bedc67,可以在36文件夹中找到两个对应文件

这里面文件的修改时间可以被作为一些操作的参考依据,比如判断是否需要assetbundle重新打

选择Version2时会发现reimport的时间大大缩短,此时是这样的

在Library文件夹下没有了meta文件夹,但是有一个Artifacts文件夹下也都是编号文件夹,不过在36文件夹中找不到对应文件

 

 

 

 

StreamingAssets文件夹

1. 被原封不动打进包里 -- 也意味着不做压缩(Unity在打安卓包的时候会对所有SteamingAssets文件夹下的文件标记为不压缩)

2. 在安卓系统上可以直接被读取

害羞的波浪线

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Unity官方直播--Unity Asset的一生

标签:就是   系统   格式   处理   改变   pipe   组件   lazy   数字   

原文地址:https://www.cnblogs.com/FudgeBear/p/13416080.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!