Unity 特殊文件夹及脚本编译顺序

一、特殊文件夹

通常我们会为我们创建的文件夹去上任何喜欢的名称,但是有一些文件夹名称会被Unity解释为一个指令,文件夹中的内容会被Unity特殊对待。例如,必须将编辑器脚本放置在名为Editor的文件夹中,这样这些脚本才能正常运行。

Assets

该文件夹是Unity工程使用到的资源的根目录。编辑器中,Project窗口直接一一对应的显示这个目录下的资源。大多数的API函数都是假定一切都是位于Assets文件夹中的,我们不需要明确的提及它。但是某些函数需要将Assets文件夹作为路径名的一部分(例如AssetDatabase中的某些函数)。

Editor

放在该文件夹或其中的子文件中的所有脚本都被视为编辑器脚本,而不是运行时脚本。这些脚本被设计为在开发期间向Unity本身添加功能的脚本,并且不能运行在已经发布的游戏上。可以在项目中使用多个Editor文件夹,但是在一些特殊的文件夹下面会影响他们自身的编译顺序。可以使用Editor脚本中的EditorGUIUtility.Load函数将放在Editor文件夹下面的Resources文件中的资源加载进来,这些资源只能通过编辑器脚本加载,在编译时这些资源会被删除。
注意:如果脚本放在编辑器文件夹中并且派生自MonoBehaviour组件,Unity不允许把这类脚本挂到GameObjects上。

Editor Default Resources

编辑器脚本可以通过使用EditorGUIUtility.Load按需加载资源文件。这个函数从Editor Default Resources里面查找资源,并且你需要把改文件夹直接放到Assets目录下。

Gizmos

Unity的Gizmos允许我们向场景视图中添加图形来辅助可视化不可见的设计细节。例如,Gizmos.DrawIcon函数放置一个图标到场景视图中,以此来标记一个特殊的对象或位置的标记。我们必须将用到的图标资源放到名为Gizmos的文件夹中,以便能通过DrawIcon函数查找到。

Plugins

Unity允许将插件添加到项目中来扩展Unity的可用功能。插件通常是用C/C++编写的本地DLL。他们可以访问由Unity提供的第三方代码库,系统调用和其他功能。必须将插件放到名为Plugins的文件夹中,以便Unity检测到他们。与编辑器文件夹一样,这回影响到编译脚本的顺序。

Resources

通常,我们可以在场景中创建资源实例,以便在游戏运行过程中使用他们。但Unity还允许我们根据自身需要通过脚本加载资源。我们只需要将资源放到Resources目录下或者它的子目录下(我们可以创建任意数量的Resources目录,也可以把Resources放到项目的任意地方),然后通过Resources.Load函数加载这些资源。当然如果Resources文件夹位于Editor的文件夹下面,则里面的资源可以通过编辑器脚本加载,但是在发布时,这些资源会被删除。

Standard Assets

当我们导入标准资源包时,这些资源会被放到一个名叫 Standard Assets的文件夹中。该文件夹除了可以包含资源外,还会影响脚本的编译顺序,具体见后面介绍。

StreamingAssets

大多数游戏资源都会直接打包到产品中,但在某些情况下,我们希望资源能够以原始格式作为单独的文件提供(例如,要在IOS上播放视频,必须访问视频文件系统,而不是把它作为MoiveTexture)。如果将文件放在名为StreamingAssets的目录中,它将原样的复制到目标平台中,然后在特定文件夹中加载他们。
Unity中的大多数资源在构建的就合并到项目中了。但是,将文件放到目标计算机上的正常文件系统里,就可以通过路径名访问该文件,有时会非常有用。比如在IOS设备上播放电影文件,在播放时,原始电影文件必须在该文件系统中可用才能正常播放。

在Unity项目中放置在StreamingAssets目录中的任何文件都会原封不动的拷贝到目标计算机的特定目录中。我们可以使用Application.streamingAssetsPath属性获取到文件夹路径。最好使用Application.streamingAssetsPath获取StreamingAssets目录的路径,因为该方法总是指向运行应用程序平台上的正确位置。
该位置因平台而异,请注意区分大小写:
在台式机上(Mac OS / Windows)上,可以使用下面代码获取文件的位置:
path = Application.dataPath + "/StreamingAssets";

在IOS中,使用:
path = Application.dataPath + "/Raw";

在Android中,使用
path = "jar:file://" + Application.dataPath + "!/assets/";
在Android上,文件包含在压缩的.jar文件中,这意味着如果不使用Unity的WWW类来检索文件,我们就需要使用额外的软件来查看.jar文件内部。

注意:位于StreamingAssets目录中的.dll文件不参与编译。

Hidden Assets

在导入过程中,Unity完全忽略Assets目录中(或其中的子目录)中的以下文件和文件夹:

  • 隐藏的目录
  • 以‘.’开头的文件和目录
  • 以‘~’结尾的文件和目录
  • 名为cvs的文件和目录
  • 扩展名为.tmp的文件

这是用于防止导入操作系统或其他应用程序创建的特殊和临时文件。

二、脚本编译顺序

Unity保留了一些项目文件夹名称来标识其内的内容具有一些特殊目的。而其中一些文件夹会影响脚本编译的编译顺序。这些文件夹名称是:

  • Assets
  • Editor
  • Editor default resources
  • Gizmos
  • Plugins
  • Resources
  • Standard Assets
  • StreamingAssets

脚本编译有四个不同的阶段。处于哪个阶段编译由其父目录确定。
在脚本必须引用其他脚本中定义的类容的情况下,编译的顺序就非常重要了。基本规则是,在当前阶段之后编译的任何东西都引用不到,在当前阶段之前或早期的阶段编译的任何内容都可以完全引用。

编译阶段如下:

  • 阶段1:编译Standard Assets、Plugin中的运行时脚本
  • 阶段2:编译Standard Assets、Plugin中的Editor脚本
  • 阶段3:编译其他不在Editor目录下的脚本
  • 阶段4:编译Editor目录下的脚本
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容