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。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

OS X 上使用.NET开发应用程序

MonoMac是面向Mac OSX API的C#绑定,其API设计主要受到了MonoTouch的启发,后者可以基于Mono开发原生的iOS应用程序。MonoMa...

19550
来自专栏.NET开发者社区

一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](五)

时间飞逝,一个星期又过去了,今天还是星期五,Rector在图享网继续跟大家分享系列文本:一步一步创建ASP.NET MVC5程序[Repository+Auto...

243100
来自专栏walterlv - 吕毅的博客

UWP 应用中 CoreApplication / Application, CoreWindow / Window 之间的区别

发布于 2018-07-29 23:51 更新于 2018-08...

30920
来自专栏ios 技术积累

iOS RunLoop

RunLoop就是一个事件处理的循环,用来不停的调度工作以及处理输入事件(比如说触摸事件、UI刷新事件、定时器事件、Selector事件),从而保持程序的持续运...

12720
来自专栏张善友的专栏

Lightweight Test Automation Framework之旅

Lightweight Test Automation Framework是ASP.NET QA团队开发的自动化集成测试框架,并且应用在ASP.NET QA团队...

22890
来自专栏walterlv - 吕毅的博客

项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦)

发布于 2018-05-10 13:49 更新于 2018-06...

10310
来自专栏walterlv - 吕毅的博客

WPF 同一窗口内的多线程/多进程 UI(使用 SetParent 嵌入另一个窗口)

发布于 2018-07-11 13:35 更新于 2018-07...

31710
来自专栏NetCore

用Js控制TextBox不能复制粘贴

今天项目中,有一个要求,需要有一个Textbox(WebControls),不能复制、粘贴 一开始没想到TextBox有这个事件,一直在找,找了N久,只有Wi...

271100
来自专栏我的博客

II7+php5.3配置过程

1.IIS 7.5中为了易于PHP程序的安装,增设了PHP Manager模 http://phpmanager.codeplex.com/releases/v...

29440
来自专栏张善友的专栏

使用Gemini构建自己的IDE

你的项目中的领域特定语言是否需要自己的IDE?Visual Studio Shell是选择之一,但是过于庞大不易部署,而且很难使用。Tim Jones的Gemi...

22260

扫码关注云+社区

领取腾讯云代金券