通用目录结构
-Assets 主目录 -Editor 编辑器 -Gizmos 标识 -Plugins 插件 -Resources 资源 -Animations 动画 -Audios 音频 -Fonts 字体 -Materials 材质 -Models 模型 -Prefabs 预制体 -SFXs 特效 -Sprites 精灵 -Videos 视频 -具体业务文件夹 -Scenes 场景 -Scripts 脚本 -Commons 通用类 -Shaders 自己写的shader -Tools 工具类 -具体业务文件夹 -Standard Assets 标准资源 -StreamingAssets 流文件资源
以上蓝色标注的项目为特殊文件夹。Unity保留了一些特殊的文件名称用来做一些特殊的用途,如果你的文件夹命名了这类的文件名,引擎内部就会对它进行一些特殊的处理,这些特殊目录对脚本的编译也会有影响。
文件夹说明
Assets 主目录
项目资源的主目录,unity项目中的所有资源都必须在此目录下才能在project面板中出现。
Editor 编辑器目录
放在此目录的脚本将被视为编辑器脚本,编辑器脚本为编辑器提供一些扩展或定制功能,但是无法在运行时使用。editor文件夹可以放置在assets目录中的任意子目录中。
Gizmos 标识目录
gizmos允许你将一些图标添加到场景中,作为一些辅助标示,比如可以标示出一些正常情况下看不见的线或点,使用gizmos.drawicon方法可以在场景中绘制图标用来做一些特殊的标记,当然前提是你得将图标放到gizmos文件夹中,这样drawicon方法才能找到它。需要注意的是,gizmos目录需要全局唯一,和editor不一样,它得固定放到跟目录下,就是说它的上一级只能是assets。
Plugins 插件目录
插件文件夹,用来放置一些三方的库插件,比如ngui,或者是一些dll库,比如json、dotween等三方库,也可以放置你自己封装的dll文件。同gizmos一样,全局唯一,必须在根目录下。
Resources 资源目录
资源文件夹,主要的美术素材、音频、视频、模型、特效、动画等资源存放地址。同editor一样,可以在主目录下任意子目录中存在。该目录下的内容在打包时都会被打到发布包中。
工程版本资源直接使用Resource加载方式,发布阶段根据项目需求统一切换资源加载方案。
特点:
- 只读,即不能动态修改。所以想要动态更新的资源不要放在这里。
- 会将文件夹内的资源打包集成到.asset文件里面。
- 主线程加载。
子目录:
-Audios 音频文件
-Animations 动画资源(片段资源放在Resources/Animations/xxx/anim中)控制器要和anim文件同级
-Fonts 字体
-Materials 材质(贴图和材质存放在同级目录下)
-Models 美术模型(模型和贴图材质文件夹存放在同级目录下)
-Prefabs 预制体
-SFXs 特效资源
-Sprites 精灵资源
-Videos 视频文件
-具体业务文件夹 具体业务需要的特殊资源存放的文件夹(例如Scriptobject类型的数据资源文件、骨骼资源文件等)
Scenes 场景目录
存放场景文件,不包括插件的案例场景文件(第三方插件的案例文件可以先放在原位置)
除初始运行场景外,其他场景都要放在各自的分类文件夹中
Scripts 脚本目录
存放C#、Shader脚本,代码内容,注意Unity3D的C#代码规范同微软.NET FRAMEWORK规范相同详情可以参照文档。
子目录:
-Commons:通用类
-Tools:工具类
-Shaders:自己写的shader
-具体业务文件夹:根据架构创建业务文件夹
Standard Assets 标准资源目录
标准资源文件夹,存放unity提供的标准资源文件的文件夹。
StreamingAssets 流文件目录
用于存放一些流文件,比如音视频文件、二进制文件、assetbundle文件。全局唯一,存放在根目录下。和Resources文件的区别就是Resources文件夹中的内容在打包时会被压缩和加密。而StreamingAsset文件夹中的内容则会原封不动的打入包中,因此StreamingAssets主要用来存放存放打包的AB资源,然后用户安装包之后把这些AB资源是放到手机内。特点:
- 只读,可以放一些压缩的AB资源。
- 只能用过WWW类(新版本都已采用UnityWebRequest来取代WWW)来读取。
其他
本文仅提供一种目录结构思路,具体项目可根据需求调整目录结构和团队管理规范。
据我的了解,Resource里放大量主要资产用Load加载并不是一个值得推荐的最佳实践
仅少部分有特定必要才放进去的资产是合适的
@π:是说常用的才放进去吗,剩余的部分放哪里比较好
@浧晦:我自己通常的方式是仅把一些需要被管理的Scriptobject文件适当分类放在Resource/下,以便通过LoadAll在对应的Manager脚本里方便初始化加载。剩余的就是Assets/下单独建立对应文件夹分门别类管理就好
最近由 π 修改于:2023-11-25 19:27:16官方关于Resource文件夹最佳实践建议可参考下文(第三部分):
https://learn.unity.com/tutorial/assets-resources-and-assetbundles#5c7f8528edbc2a002053b5a6