【Unity】Unity 特殊文件夹


Unity特殊文件夹

Unity 保留了一些项目文件夹名称来指示内容具有特殊用途。其中一些文件夹会影响脚本编译的顺序。这些文件夹名称为:

文件夹名称
Assets资产
Editor编辑器
Editor default resources编辑器资源
Gizmos辅助图标
Plugins插件
Resources资源
Standard Assets标准资产
StreamingAssets流资产

预定义的程序集

Unity 根据脚本文件在项目文件夹结构中的位置,以四个不同的阶段编译脚本。Unity 为每个阶段创建一个单独的 CSharp 项目文件 (.csproj) 和一个预定义的程序集。(如果没有符合编译阶段的脚本,Unity 不会创建相应的项目文件或程序集。)

当脚本引用在不同阶段编译的类(因此位于不同的程序集中)时,编译顺序很重要。基本规则是无法引用在当前阶段之后的阶段编译的任何内容。在当前阶段或早期阶段编译的所有内容则是完全可用的。

编译阶段如下:

阶段程序集名称脚本文件
1Assembly-CSharp-firstpassStandard Assets、Pro Standard Assets 和 Plugins 的文件夹中的运行时脚本。
2Assembly-CSharp-Editor-firstpassEditor 的文件夹(位于名为 Standard Assets、Pro Standard Assets 和 Plugins 的顶级文件夹中的任意位置)中的 Editor 脚本。
3Assembly-CSharp不在Editor 的文件夹中的所有其他脚本。
4Assembly-CSharp-Editor剩下的所有脚本 (它们位于一个名为“Editor”的文件夹中)。

COCOS和Unity资源管理对比

COCOS Creator的资源管理是比较简单的,主要靠的是mata文件,通过文件中记录的UUID和资源产生对应关系,以实现资源映射。打包时通过判断文件的引用情况最终决定哪些文件会被打进包中(Resources文件夹下的文件无论是否引用都会打包)。这样的方式有一些弊端,比如多人同步提交代码时容易出现meta文件冲突,使用GIT时会比较麻烦,影响效率。

Unity的资源管理有多种方式,

Editor 编辑器文件夹

这个文件夹是专门用来做编辑器级别功能的,比如一些辅助开发的插件,或者地图生成器、角色展示器等,这类功能都是在开发过程中使用的,不需要打包到游戏中。

Editor文件夹可以有多个,可以直接放在Assets文件夹下,也可以放在某个功能子文件夹下,官方说法是可在 Assets 文件夹中的任何位置添加多个 Editor 文件夹。应将 Editor 脚本放在 Editor 文件夹内或其中的子文件夹内。

使用 Editor 脚本中的 EditorGUIUtility.Load 函数可从 Editor 文件夹中的 Resources 文件夹加载资源。这些资源只能通过 Editor 脚本加载,并会从构建中剥离。

注意:如果脚本位于 Editor 文件夹中,Unity 不允许将派生自 MonoBehaviour 的组件分配给游戏对象。

StreamingAssets 流资源文件夹

只读,也是资源文件夹,但是其中的文件不压缩也不加密,需要使用Application.steamingAssetsPath访问该路径,通常存放二进制文件、配置文件或文件型数据库。

Resources 资源文件夹

只读,其中的文件打包时会压缩加密,使用Resources.Load方法动态加载,一般放一些动态加载的模型资源Prefab、Object之类的,跟cocos的Resources是一样的。
这个文件夹好不好?好!但是该不该随便用呢?答案是不应该。
1:它使内存管理变得困难;
2:不恰当的使用Resource文件夹,会增加程序启动时间和打包时间;
3:降低了工程中的内容转换到特定平台的能力,使内容更新困难;
4:随着Resources文件夹数量的增加,对这些文件夹中的Assets的管理变得非常困难;
5:资源系统降低了项目向特定平台提供自定义内容的能力,并消除了增量内容升级的可能性;
6:unity为了兼容所有平台,Resources文件下的资源使用的统一打包,这就会对资源的优化有一定的限制,比如说把图片放在Resource文件夹下,unity不会对这些图片做压缩,这无异是增加了包体大小。

Library 库文件夹

Unity把Asset下支持的资源导入成自身识别的格式,以及编译代码成为DLL文件都放在Library文件夹中。Unity编辑器自动生成Library文件夹并不会 自动删除 不需要的资源文件,当删除文件夹Assets的图片、音频资源的时候,并不会自动删除,而是保留,这就是为什么这个Library文件夹会越来越大的原因。

待补充内容

TODO
Unity编译的顺序是什么?哪些东西会被打包?
Unity资源的生命周期
Editor文件夹具体怎么玩?
AssetBundles都做了什么?
Resources目录跟AssetBundles的关系
什么是AssetDatabase?有什么好处?怎么用?
补充其他特殊文件夹的讲解
吃透官方文档中“脚本-Unity架构”整个章节
什么是程序集?程序集干嘛用的?官方文档中程序集章节提到的Pro Standard Assets是什么意思?
程序集如何自定义?通用的自定义程序集是什么样的?
Unity和cocos的文件管理区别。


更多内容请查看总目录【Unity】Unity学习笔记目录整理

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值