Unity官方直播--Unity Asset的一生
Posted fudgebear
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity官方直播--Unity Asset的一生相关的知识,希望对你有一定的参考价值。
Unity Asset的一生
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的一生的主要内容,如果未能解决你的问题,请参考以下文章