unity特殊文件夹及其作用

这是之前总结好多前辈的分享
1.Editor

存放编辑器脚本

可以放在Assets根目录下,也可以放在其它子目录里,数量不限。该文件夹里的所有资源文件或脚本文件都不会被打包进发布包中,并且脚本也只能在编辑器中使用。
一般会把一些工具类的脚本或者是一些编辑时用的DLL 放在这里, 比如我们现在要做类似技能编辑器,那么编辑器的代码放在这里是再好不过了,因为实际运行时我们只需要编辑器生成的文件,而不需要编辑器的核心代码。

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

只能放在Assets根目录下,有且仅有一个.存放编辑器用到的资源,如图片、文本文件等。它里面的资源不会被打包进发布包中,我们可以通过EditorGUIUtility.Load方法读取该文件夹下的资源。

TextAssettext=EditorGUIUtility.Load(“test.txt”)asTextAsset;
Debug.Log(text.text);

3.Gizmos

通常是存放TIF格式的图片,在OnDrawGizmos方法内使用Gizmos.DrawIcon将其画为图标在场景中显示。(只能放在Assets根目录下,有且仅有一个)
如下代码所示它可以在Scene视图里给某个坐标绘制一个icon。它的好处是可以传一个Vecotor3 作为图片显示的位置。 参数2就是图片的名子,当然这个图片必须放在Gizmos文件夹下面。

voidOnDrawGizmos()
{
Gizmos.DrawIcon(transform.position,“0.png”,true);
}
如果只想挂在某个游戏对象身上,那么在Inspecotr里面就可以直接设置。

这里还是要说说OnDrawGizmos()方法,只要脚本继承了MonoBehaviour后,并且在编辑模式下就会每一帧都执行它。发布的游戏肯定就不会执行了,它只能用于在scene视图中绘制一些小物件。比如要做摄像机轨迹,那么肯定是要在Scene视图中做一个预览的线,那么用Gizmos.DrawLine 和Gizmos.DrawFrustum就再好不过了。

4.Plugins

Plugins/Android–存放Android插件,包括 .jar或XML文件等。
Plugins/iOS–存放iOS插件,包括.a 或 .m、.mm文件等。
如果做手机游戏开发一般 andoird 或者 ios 要接一些sdk 可以把sdk依赖的库文件 放在这里,比如 .so .jar .a 文件。这样打完包以后就会自动把这些文件打在你的包中。

5.Resources

可以在根目录下,也可以在子目录里,只要名子叫Resources就可以。比如目录:/xxx/xxx/Resources 和 /Resources 是一样的,无论多少个叫Resources的文件夹都可以。Resources文件夹下的资源不管你用还是不用都会被打包进.apk或者.ipa

Resource.Load:编辑时和运行时都可以通过Resource.Load来直接读取。

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

AssetDatabase.LoadAssetAtPath():它可以读取Assets目录下的任意文件夹下的资源,它只能在编辑时用。它的路径是”Assets/xx/xx.xxx” 必须是这种路径,并且要带文件的后缀名。

我觉得在电脑上开发的时候尽量来用Resource.Load() 或者 Resources.LoadAssetAtPath() ,假如手机上选择一部分资源要打assetbundle,一部分资源Resource.Load().那么在做.apk或者.ipa的时候 现在都是用脚本来自动化打包,在打包之前 可以用AssetDatabase.MoveAsset()把已经打包成assetbundle的原始文件从Resources文件夹下移动出去在打包,这样打出来的运行包就不会包行多余的文件了。打完包以后再把移动出去的文件夹移动回来。

6.StreamingAssets

存放媒体文件,如视频等

这个文件夹下的资源也会全都打包在.apk或者.ipa 它和Resources的区别是,Resources会压缩文件,但是它不会压缩原封不动的打包进去。并且它是一个只读的文件夹,就是程序运行时只能读 不能写。它在各个平台下的路径是不同的,不过你可以用Application.streamingAssetsPath 它会根据当前的平台选择对应的路径。

有些游戏为了让所有的资源全部使用assetbundle,会把一些初始的assetbundle放在StreamingAssets目录下,运行程序的时候在把这些assetbundle拷贝在Application.persistentDataPath目录下,如果这些assetbundle有更新的话,那么下载到新的assetbundle在把Application.persistentDataPath目录下原有的覆盖掉。

因为Application.persistentDataPath目录是应用程序的沙盒目录,所以打包之前是没有这个目录的,直到应用程序在手机上安装完毕才有这个目录。

StreamingAssets目录下的资源都是不压缩的,所以它比较大会占空间,比如你的应用装在手机上会占用100M的容量,那么你又在StreamingAssets放了一个100M的assetbundle,那么此时在装在手机上就会在200M的容量。

7.Hidden Assets(隐藏文件夹)

在导入阶段,Unity将完全忽略以下文件夹下的资源。
以 Hidden 命名的文件夹。
以 ‘.’ 开头的文件和文件夹
以 ‘~’ 开头的文件和文件夹
以 ‘cvs’ 命名的文件和文件
以 ‘tmp’ 为扩展名的文件
如存在 工程将会报错

8.WebPlayerTemplates

-存放网页模板,其中每个模板均以一个自定义名称的子目录形式存放。
用来替换web build的默认网页。这个文件夹中的脚本都不会被编译。这个文件夹必须作为Assets文件夹的直接子目录。
否则,WebPlayerTemplates文件夹存在于其它子目录中,那它里面的所有脚本都会被编译。

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

  1. Pro Standard Assets

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

二、脚本编译顺序
Unity保留了一些项目文件夹名称来标识其内的内容具有一些特殊目的。而其中一些文件夹会影响脚本编译的编译顺序。这些文件夹名称是:
Assets
Editor
Editor default resources
Gizmos
Plugins
Resources
Standard Assets
StreamingAssets

猜你喜欢

转载自blog.csdn.net/lyb19940526/article/details/84258253