码迷,mamicode.com
首页 > 编程语言 > 详细

【译】Unity工程目录中的特殊文件夹

时间:2015-04-08 06:29:01      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:

 

转自: http://wiki.unity3d.com/index.php/Special_Folder_Names_in_your_Assets_Folder


 Unity中一些特定名字的文件夹有特殊的属性.

Hidden Folders

  Unity会忽略以.起始命名的文件夹(例如 ".UnitTests/",".svn/"),放在这种文件夹中的资源不会被导入到Unity中,脚本也不会被编译,同时在工程视图中无法看到此类型的文件夹。 (windows视窗下无法命名为以.起始命名的文件夹,在cmd中可以通过mkdir .xxx来创建文件夹) (这种类型的文件夹在我们开发中没用到,有一个原因可能是在工程里面做了svn外链,更新后不显示.svn文件夹吧)

 

Standard Assets

  在这个文件夹里面的脚本将会被最先编译,而且将会根据编写脚本的语言来生成 Assembly-CSharp-firstpass 或 Assembly-UnityScript-firstpass 或 Assembly-Boo-firstpass , 参考这篇文章 http://docs.unity3d.com/Documentation/Manual/ScriptCompileOrderFolders.html 。 (这个文件夹在开发中暂时也没用到 --)

 

Pro Standard Assets

  和Standard Assets文件夹功能一样,只是这里的资源被专业(Pro)版本的Unity使用,例如专业版本的一些功能,render textures ,screen-space effects等等(实际开发中都是用的Pro版本,像render textures里面用到的贴图放在了Resources文件夹下,这个文件夹暂时也没用到)

  同样,在这个文件夹里面的脚本将会被提前编译,它们允许被Pro Standard Assets文件夹外面的脚本所访问。

 

Editor

  Editor文件夹允许它里面的脚本访问UnityEditor中的API,如果你的脚本使用了任何UnityEditor里面的类或者函数,那么这个脚本必须放到一个叫Editor的文件夹中。(Editor文件夹是开发中用的最多的一个文件夹了,做编辑扩展、发布流程都要放到这里面来做)

  在Editor文件夹中的脚本将不会被打包到发布的游戏中,它们仅仅只是在Editor模式中使用。

  整个工程目录中可以有多个Editor文件夹。

  需要注意的是:如果Editor文件夹不是放在特殊文件夹下的话那么它们的位置可以随意摆放,但是如果它们是在 "Standard Assets" 或 "Pro Standard Assets" 或 "Plugins"这种特殊文件夹下的话,它们必须放在这些特殊文件夹的第一层目录中,否则将不会起作用。例如,"My Extension/Scripts/Editor" 这种路径是正确的做法,但是如果Editor文件夹是放在特殊目录下的话,它们必须是这样,"Standard Assets/Editor/My Extension/Scripts" 或 "Pro Standard Assets/Editor/My Extension/Scripts" 或 "Plugins/Editor/My Extension/Scripts"。

 

Plugins

  将脚本中需要访问的原生插件(native plugins)放入到此文件夹中,它们将自动的被打入到游戏发布包中,注意这个文件夹必须放在Assets文件夹下,不能放到其他地方。

  在Windows平台,插件为 .dll 类型文件,在Mac平台,插件为 .bundle 类型文件,在Linux平台,插件为 .so 类型文件。

  与 Standard Assets文件夹一样,这里面的脚本将会被提前编译,这样允许它们被其他在Plugins文件夹以外的脚本调用。(查看官网文档有这样一句话"Phase 1: Runtime scripts in folders called Standard Assets, Pro Standard Assets and Plugins.",可知这三个特殊文件夹中的Runtime脚本会在第一步编译)

 

Plugins/x86

  如果你制作一个32位或者通用(32位和64位)平台的版本的话,如果这个子文件夹存在,那么在这个文件夹里面的插件将会被自动的打包到游戏中,如果这个文件夹不存在,那么Unity将会转而到父文件夹(Plugins)里面查找插件。

 

Plugins/x86_64

  如果你制作一个64位或者通用(32位和64位)平台的版本的话,如果这个子文件夹存在,那么在这个文件夹里面的插件将会被自动的打包到游戏中,如果这个文件夹不存在,那么Unity将会转而到父文件夹(Plugins)里面查找插件。

   如果你在制作一个通用平台的版本,那么建议你同时创建x86和x86_64这两个文件夹,并且在这里面放入相应32位和64位版本的插件。

 

Plugins/Android

  在这个文件夹里面放入任何需要被Android工程包含的.jar文件(Java插件使用)或者.so文件(Android NDK插件使用),更多可以参考: http://docs.unity3d.com/Documentation/Manual/PluginsForAndroid.html  (这个文件夹暂时了解不多,编译APK时也还没用过Android工程)

 

Plugins/iOS

   一个受限制的自动添加(作为符号链接)任何.a、.m、.mm、.c 或者 .cpp 文件到生成的Xcode工程里面的方法。可以参考:http://docs.unity3d.com/Documentation/Manual/PluginsForIOS.html

  如果你想要在自动添加文件到Xcode工程的这个过程中有更多的可控性的话,你可以使用PostprocessBuildPlayer这个功能,而且使用这个功能也并不要求你将相应的处理文件放入到 Plugins/iOS文件夹中。更多可以参考: http://docs.unity3d.com/Documentation/Manual/BuildPlayerPipeline.html

 

Resources

  不同于在Editor编辑器中直接拖拽资源到Inspector面板脚本变量这种直接引用资源的方法,Resources文件夹是一个允许你在脚本里面直接通过路径和名字读取资源的文件夹。

  正是因为这个原因,所以在放置资源到这个文件夹中的时候必须加以注意,为什么呢?因为即使在这个文件夹中的某些资源没有被用到但是都会被打包到最终的发布包中,因为你通过脚本使用这些资源,而Unity没有办法检测到哪些资源有被用到哪些没有。

  在Unity工程中可以有多个Resources文件夹,但是不建议这样做。

  一旦你的游戏发布了,所有在Resources文件夹中的资源将会被打包进游戏包中,这也就意味着即使你的代码能够通过工程中的资源路径读取到里面的资源,但是在最后的发布包中Resources文件夹将不复存在。参考:http://docs.unity3d.com/Documentation/Manual/LoadingResourcesatRuntime.html

  注意当资源被MonoBehaviour脚本中的变量访问时,这些资源将会在MonoBehaviour脚本实例化的时候加载到内存中,如果引用的资源过大而你不想这样加载的话,你可以将体积过大的资源放到Resources文件夹中,再通过Resources.Load接口来加载它们,当资源不再被使用时,你能通过Object.Destroy接口来删除这个资源,最后再调用Resources.UnloadUnusedAssets释放它所占用的内存。

 

Editor Default Resources

  这个文件夹的作用类似于Resources文件夹,只不过这里面的资源只被Editor脚本所使用,如果你的Editor脚本中需要加载资源,而且这些资源不需要被打包到最终的发布包中的话就使用这个文件夹(例如icons、GUI skins等)。

  因为Editor脚本不是MonoBehaviour脚本,所以你不能通过拖拽资源到Inspector面板上的方式来引用它们。

  你可以使用EditorGUIUtility.Load函数来加载在Editor Default Resources文件夹中的资源。

  注意,不同于Resources.Load函数,EditorGUIUtility.Load函数要求你在加载资源的时候提供资源的后缀名,比如"myPlugin/mySkin.guiskin"

  同样,我们能够通过Object.Destroy来删除资源,再通过调用EditorUnity.UnloadUnusedAssets函数来释放EditorGUIUnity.Load加载资源所占用的内存。

  Editor Default Resources文件夹在整个工程中只能存在一个,而且必须位于Assets目录下面。

 

Gizmos

  将所有被Gizmos.DrawIcon函数所使用的贴图和图标放入到Gizmos文件夹中。在这个文件夹里面的贴图能够通过名字来访问,并且能够在Editor中作为gizmo(其实gizmo是否能解释为一个小物件呢?)绘制到屏幕上。

 

WebPlayerTemplates

  被用来替换网页版发布包中的默认网页,任何在里面的脚本都不会被编译,这个文件夹必须直接放在Assets文件夹下(也就是顶层目录),不能放到其他文件夹下。 (这个文件夹在开发中木有用到)

 

StreamingAssets

  任何在这个文件夹里面的资源都将会不做任何改动的拷贝到发布版文件夹中(除了移动和网页发布包,streamingAssets里面的资源将会打包到一个最终的发布包中),StreamingAssets文件夹的路径虽然在每个平台都不一样,但是可以统一通过Application.streamingAssetsPath获取到。可以参见:1.http://docs.unity3d.com/Documentation/ScriptReference/Application-streamingAssetsPath.html) 2. http://docs.unity3d.com/Documentation/Manual/StreamingAssets.html

  

 参考

  1. http://tieba.baidu.com/p/3233940618     【翻译贴】Unity Assets目录下的特殊文件夹名称

  2. http://www.xuanyusong.com/archives/3229   Unity3D研究院之手游开发中所有特殊的文件夹

【译】Unity工程目录中的特殊文件夹

标签:

原文地址:http://www.cnblogs.com/sutingwei/p/4388869.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!