Unity项目目录架构和命名规则
文件夹命名规则
参考Special folder names和Special Folders and Script Compilation Order
Assets
主文件夹,包含所有工程需要用到的资源。
Editor
所有在Editor和它的子文件夹的脚本,都不会作为运行期脚本被编译,而是作为动态添加Unity编译器功能的脚本来编译。在该文件夹和其子文件夹的脚本不能被添加到GameObject上。
Editor文件夹可以被放置在Standard Assets
Pro Standard Assets
Plugins
的任意一个子文件夹下。
Editor default resources
必须作为Assets的子文件夹,作为Editor脚本的资源使用,使用方式是通过函数EditorGUIUtility.Load
来使用。
Gizmos
场景面板中的图标图片资源,使用Gizmos.DrawIcon
函数在场景面板新建图标,图标的图片资源必须位于这个文件夹内。(比如Unity的各种插件)
Plugins
所有的插件资源,包括用C/C++编写的Dll库。
Resources
一般用来存放需要通过代码初始化/使用的资源,可以放在工程中的任意文件夹中,在Resources文件夹中的文件可以通过Resources.Load
来读取,像下面这样。
rend.material.mainTexture = Resources.Load("glass") as Texture;
GameObject instance = Instantiate(Resources.Load("enemy", typeof(GameObject))) as GameObject;
Standard Assets
导入标准材质包时新建的,拥有自己的编译顺序。
StreamingAssets
通过Application.streamingAssetsPath
获取目录路径,该目录中的文件将会原封不动的被拷贝到不同的平台上,每个平台对应的目录不一致,但是都可以通过上述方法获得。一般用来存放视频等资源文件。
WebPlayerTemplates
存放网页相关文件。
隐藏文件
一般用来存放README以及一些操作系统生成的临时文件,这些文件/文件夹一般以.
~
或者名为cvs
或者扩展名是tmp
。
文件夹编译顺序
在Assents中的脚本会按照以下顺序编译。
Standard Assets
Pro Standard Assets
Plugins
中的运行期脚本(包括MonoBehaviour和ScriptableObject等)。- 工程目录中的各种
Editor
文件夹中的Editor脚本。 Editor
文件夹之外的其他脚本(非运行期脚本)。Editor
文件夹之内的其他脚本(非Editor脚本)。
编译顺序在后面的脚本不可以被编译顺序在前面的脚本引用。
工程文件目录架构
可以如下图设置文件目录
其中GameAssets
为美术人员维护,美术人员使用Unity新建简单的空白工程,里面只有GameAssets的资源文件夹,这样每次制作完都可以Export UnityPockage
,将其打包成UnityPackage
给开发人员导入,好处是可以单独工程编辑,每次需要导入新的资源只要Import
美术给的UnityPackage。