Unity项目目录架构和命名规则

文件夹命名规则

参考Special folder namesSpecial 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中的脚本会按照以下顺序编译。

  1. Standard Assets Pro Standard Assets Plugins中的运行期脚本(包括MonoBehaviour和ScriptableObject等)。
  2. 工程目录中的各种Editor文件夹中的Editor脚本。
  3. Editor文件夹之外的其他脚本(非运行期脚本)。
  4. Editor文件夹之内的其他脚本(非Editor脚本)。

编译顺序在后面的脚本不可以被编译顺序在前面的脚本引用。

工程文件目录架构

可以如下图设置文件目录



其中GameAssets为美术人员维护,美术人员使用Unity新建简单的空白工程,里面只有GameAssets的资源文件夹,这样每次制作完都可以Export UnityPockage,将其打包成UnityPackage给开发人员导入,好处是可以单独工程编辑,每次需要导入新的资源只要Import美术给的UnityPackage。