特殊文件夹名称
通常可为创建的文件夹选择任何名称来组织 Unity 项目。但是,Unity 会将许多文件夹名称解释为应以特殊方式处理文件夹内容的指令。例如,必须将 Editor 脚本放在名为 Editor 的文件夹中才能使这些脚本正常工作。
Assets
- Assets 文件夹是包含 Unity 项目使用的资源的主文件夹。Editor 中的 Project 窗口的内容直接对应于 Assets 文件夹的内容。大多数 API 函数都假定所有内容都位于 Assets 文件夹中,因此不要求显式提及该文件夹。但是,有些函数需要将 Assets 文件夹作为路径名的一部分添加(例如,AssetDatabase 类中的一些函数)。
Editor
- 放在名为 Editor 的文件夹中的脚本被视为 Editor 脚本而不是运行时脚本。这些脚本在开发期间向 Editor 添加功能,并在运行时在构建中不可用。
存放编辑器脚本,这里的脚本不会被打包到最终的游戏中。
可在 Assets 文件夹中的任何位置添加多个 Editor 文件夹。应将 Editor 脚本放在 Editor 文件夹内或其中的子文件夹内。
Editor 文件夹的具体位置会影响其脚本相对于其他脚本的编译时间(有关此方面的完整说明,请参阅特殊文件夹和脚本编译顺序的相关文档)。使用 Editor 脚本中的 EditorGUIUtility.Load 函数可从 Editor 文件夹中的 Resources 文件夹加载资源。这些资源只能通过 Editor 脚本加载,并会从构建中剥离。
注意:如果脚本位于 Editor 文件夹中,Unity 不允许将派生自 MonoBehaviour 的组件分配给游戏对象。
Editor Default Resources
- Editor 脚本可以使用通过 EditorGUIUtility.Load 函数按需加载的资源文件。此函数在名为 Editor Default Resources 的文件夹中查找资源文件。
存放使用EditorGUIUtility.Load函数读取的资源,主要供编辑器脚本使用。
- 只能有一个 Editor Default Resources 文件夹,且必须将其放在项目的根目录;直接位于 Assets 文件夹中。将所需的资源文件放在此 Editor Default Resources 文件夹内或其中的子文件夹内。如果资源文件位于子文件夹中,请始终在传递给 EditorGUIUtility.Load 函数的路径中包含子文件夹路径。
Gizmos
- Gizmos 允许将图形添加到 Scene 视图,以帮助可视化不可见的设计细节。Gizmos.DrawIcon 函数在场景中放置一个图标,作为特殊对象或位置的标记。必须将用于绘制此图标的图像文件放在名为 Gizmos 的文件夹中,这样才能被 DrawIcon 函数找到。
存放图片,在OnDrawGizmos函数内调用Gizmos。DrawIcon函数可以读取这里的图片将其作为图标在场景中显示。
- 只能有一个 Gizmos 文件夹,且必须将其放在项目的根目录;直接位于 Assets 文件夹中。将所需的资源文件放在此 Gizmos 文件夹内或其中的子文件夹内。如果资源文件位于子文件夹中,请始终在传递给 Gizmos.DrawIcon 函数的路径中包含子文件夹路径。
Resources
可从脚本中按需加载资源,而不必在场景中创建资源实例以用于游戏。为此,应将资源放在一个名为 Resources 的文件夹中。通过使用 Resources.Load 函数即可加载这些资源。
可在 Assets 文件夹中的任何位置添加多个 Resources 文件夹。将所需的资源文件放在 Resources 文件夹内或其中的子文件夹内。如果资源文件位于子文件夹中,请始终在传递给 Resources.Load 函数的路径中包含子文件夹路径。
只读,其中的文件打包时会压缩加密,使用Resources.Load方法动态加载,一般放一些动态加载的模型资源Prefab、Object之类的,跟cocos的Resources是一样的。
这个文件夹好不好?好!但是该不该随便用呢?答案是不应该。
1:它使内存管理变得困难;
2:不恰当的使用Resource文件夹,会增加程序启动时间和打包时间;
3:降低了工程中的内容转换到特定平台的能力,使内容更新困难;
4:随着Resources文件夹数量的增加,对这些文件夹中的Assets的管理变得非常困难;
5:资源系统降低了项目向特定平台提供自定义内容的能力,并消除了增量内容升级的可能性;
6:unity为了兼容所有平台,Resources文件下的资源使用的统一打包,这就会对资源的优化有一定的限制,比如说把图片放在Resource文件夹下,unity不会对这些图片做压缩,这无异是增加了包体大小。
- 请注意,如果 Resources 文件夹是 Editor 的子文件夹,则其中的资源可通过 Editor 脚本加载,但会从构建中剥离。
Standard Assets
- 导入标准资源包(菜单:Assets > Import Package__)时,资源将放在一个名为 Standard Assets__ 的文件夹中。除了包含资源之外,这些文件夹还会对脚本编译顺序产生影响;请参阅关于特殊文件夹和脚本编译顺序的页面以了解更多详细信息。
标准unity资源包存放路径。这个文件夹中的脚本语言会被最先编译,这个文件夹下面的会导出到一些Assembly里面。
- 只能有一个 Standard Assets 文件夹,且必须将其放在项目的根目录;直接位于 Assets 文件夹中。将所需的资源文件放在此 Standard Assets 文件夹内或其中的子文件夹内。
StreamingAssets
- 尽管将资源直接合并到构建中更为常见,但有时可能希望资源以其原始格式作为单独的文件提供。例如,需要从文件系统访问视频文件,而不是用作 MovieTexture 在 iOS 上播放该视频。将一个文件放在名为 StreamingAssets 的文件夹中,这样就会将其按原样复制到目标计算机,然后就能从特定文件夹中访问该文件。
要说到StreamingAssets,其实和Resources还是蛮像的。同样作为一个只读的Unity3D的保留文件夹出现。不过两者也有很大的区别,那就是Resources文件夹中的内容在打包时会被压缩和加密。而StreamingAsset文件夹中的内容则会原封不动的打入包中,因此StreamingAssets主要用来存放一些二进制文件。下面也同样做一个简单的总结:
- 只读不可写。
- 主要用来存放二进制文件。
- Android平台下一般是通过过WWW类来读取。
保存原始文件格式的文件夹,可以通过普通的IO操作读取存放在这的文件。当游戏发布后,在不同平台,该路径对应的文件存储位置也不一样(如下所示),可以通过Unity提供的Application.streamingAssetsPath访问它对应的路径。当将Unity工程导出为Android Studio工程后,StreamingAssets 文件夹对应的就是Android Studio 工程中的assets文件夹,在Android开发中,这是一个特殊的文件夹路径,如果在Unity程序中访问它,必须使用WWW,而不是普通的IO操作。
- 只能有一个 StreamingAssets 文件夹,且必须将其放在项目的根目录;直接位于 Assets 文件夹中。将所需的资源文件放在此 StreamingAssets 文件夹内或其中的子文件夹内。如果资源文件位于子文件夹中,请始终在用于引用流媒体资源的路径中包含子文件夹路径。
隐藏的资源
在导入过程中,Unity 完全忽略 Assets 文件夹(或其子文件夹)中的以下文件和文件夹:
以“.”开头的文件和文件夹。
以“~”结尾的文件和文件夹。
名为 cvs 的文件和文件夹。
扩展名为 .tmp 的文件。
Plugins/Android
存放Android工程相关文件,包括.so、.java或配置文件等。
Plugins/IOS
存放ios文件,包括.a或.m、.mm文件等。
各个平台的存放资源路径文件操作IO
PC平台:path = Application.dataPath + "/StreamingAssets";
IOS平台:path = ApplicationdataPath + "/Raw";
Android平台:path = "jar:file://" + Application.dataPath + "!/assets/";
WebGLTemplates:存放网页游戏模板,模板是一个文件夹,文件夹的名称就是模板的名称,其中至少包括一个index.html网页模板文件,放入名称为thumbnail.png的图片可以作为模板图片。