Unity 的 Assets目录下有一些重要的文件夹没有被默认创建,一开始默认只有一个Scene目录。
在Packages目录下展示了当前工程的packages,该目录是只读的(2018版本后才有),只能通过PM变化。
场景可以存放在任意目录,不限于Scene目录。
Editor目录,用以存放辅助开发的工具,即编辑器。Editor目录的脚本不会被编译打包出去。
Editor Default Resources 存放工具所需的一些美化资源,唯一且只能放在Assets目录下。
Plugins目录存放第三方的代码,如SDK接入的文件,在编译时链接到DLL中。
Resources下的文件会被特殊打包,强制加载进内存。
Gizmos存储一些Scene界面的标线,图标等。
StreamingAsset 非常重要,Unity游戏发布时,只有Resources和StreamingAssets文件夹里的资源会被随包出去,复制到APK或者IOS的包内。更具体的在“目录分布“一文中介绍。
Resources的资源是同步加载的,而AB的资源是异步加载。AB资源无法直接看到资源情况。使用AB资源需要提前打包,否则会有Bug。开发期全部使用Resources替代。
但是Resources并不建议使用过度,因为会初始化加载全部的资源,而且常驻内存,增加启动时间,资源无法增加!
Resources一般只在以下情况使用:1.整个生命周期都需要的资源;2.不怎么占用内存的资源;3.不因平台差异变化的资源;4.用于启动的资源。
序列化
构建项目的时候,Resources下的文件会被序列化为一个文件,且拥有自己的metadata和索引信息,用红黑树实现资源查找。(红黑树是每个合格的程序员都应该实现一遍的高效数据结构)用于索引FileGUID和LocalGUID,记录偏移量。
AssetDatabase -- 成熟的方案
在编辑器模式下的加载类,提供了 常用接口,同步加载,用宏区分Editor模式,模拟AssetBundles加载。
网友评论