脚本编译顺序

  • 1:处于 Standard Assets, Pro Standard Assets 和 Plugins 文件夹中的运行时脚本(Standard Assets 文件夹需是Assets的一级子文件夹.)
  • 2:处于 Standard Assets, Pro Standard Assets 和 Plugins 文件夹下的以 Editor 命名的一级子文件夹中的脚本。
  • 3:顶级 Editor 文件夹中的脚本
  • 4:其他 Editor 文件夹中的脚本(例如其他文件夹下的以 Editor 命名的子文件夹)
    另外在 Assets 文件夹中以 WebPlayerTemplates 命名的顶级子文件(即Assets/WebPlayerTemplates)将不会编译。若是处于别的文件夹下的 WebPlayerTemplates (如Assets/Scripts/WebPlayerTemplates)将不会防止编译。

1.Editor

文件不会打进发布包,并且脚本也只能在编辑时使用。
可以放在Assets根目录下,也可以放在其它子目录里,数量不限。如果在特殊文件夹下,那Editor文件夹必须是特殊文件夹的直接子目录。
一般把一些工具类的脚本放在这里,或者是一些编辑时用的DLL。

2.Editor Default Resources(注意中间是有空格的)

文件不会打进发布包
必须放在Project视图的根目录下
可以把编辑器用到的一些资源放在这里,仅开发时使用。
EditorGUIUtility.Load去读取该文件夹下的资源

3.Gizmos

Gizmos文件夹存放用Gizmos.DrawIcon方法使用的贴图、图标资源。放在Gizmos文件夹中的贴图资源可以直接通过名称使用,可以被Editor作为gizmo画在屏幕上。
只能放在Assets根目录下,有且仅有一个

voidOnDrawGizmos(){  
    Gizmos.DrawIcon(transform.position,"0.png",true);  //仅在Unity编辑期可见
} 
//可以在Scene视图里给某个坐标绘制一个icon。它的好处是可以传一个Vecotor3 作为图片显示的位置。 参数2就是图片的名子,当然这个图片必须放在Gizmos文件夹下面。
//本功能在Unity4.x下会部分用到,但在Unity5.x中基本无用,可以在属性视图中很方便的给特定位置信息绘制Icon

4.Plugins

会打进发布包
只能放在Assets根目录下,有且仅有一个
可以把sdk依赖的库文件 放在这里,比如 .so .jar .a 文件。

  • Plugins/Android–存放Android插件,包括 .jar 或XML文件等。
  • Plugins/iOS–存放iOS插件,包括 .a 或 .m、.mm文件等。

5.Resources

存放需要动态读取的资源。
不管你用还是不用都会被打包进.apk或者.ipa (会压缩)
在打包前可以用AssetDatabase.MoveAsset方法把不必要的资源从文件夹中移出去;打完包后再把移出去的资源移回来。

可以放在Assets根目录下,也可以放在其它子目录里,数量不限。

Resource.Load :编辑时和运行时都可以通过Resource.Load来直接读取。
Resources.LoadAssetAtPath() :它可以读取Assets目录下的任意文件夹下的资源,它可以在编辑时或者编辑器运行时用,它但是它不能在真机上用,它的路径是”Assets/xx/xx.xxx” 必须是这种路径,并且要带文件的后缀名。

6.StreamingAssets

存放媒体文件,如视频等。
全都打包在.apk或者.ipa (不会压缩,只读)
只能放在Assets根目录下,有且仅有一个。
它在各个平台下的路径是不同的。
通过Application.streamingAssetsPath来访问

7.Hidden Assets

在导入阶段,Unity将完全忽略以下文件夹下的资源。

  • 以 Hidden 命名的文件夹。
  • 以 ‘.’ 开头的文件和文件夹
  • 以 ‘~’ 开头的文件和文件夹
  • 以 ‘cvs’ 命名的文件和文件
  • 以 ‘tmp’ 为扩展名的文件

8.WebPlayerTemplates

用来替换web build的默认网页。这个文件夹中的脚本都不会被编译。
这个文件夹必须作为Assets文件夹的直接子目录。

9.Standard Assets

只能放在Assets根目录下,有且仅有一个
在这个文件夹中的脚本最先被编译。
这个文件夹中的脚本会被导出到Assembly-CSharp-firstpass, Assembly-UnityScript-firstpass 或 Assembly-Boo-firstpass项目中,依语言而定。参考http://docs.unity3d.com/Documentation/Manual/ScriptCompileOrderFolders.html 。在这个文件夹中的脚本比其他脚本都要先编译。将脚本放在这个文件夹里,就可以用C#脚本来访问js脚本或其他语言的脚本。

10. Pro Standard Assets

只能放在Assets根目录下,有且仅有一个
跟Standard Assets相同,只不过里面的文件是给Pro版本的Unity使用的。