【譯】Unity工程目錄中的特殊文件夾

 

轉自: http://wiki.unity3d.com/index.php/Special_Folder_Names_in_your_Assets_Folderphp


 Unity中一些特定名字的文件夾有特殊的屬性.html

Hidden Folders

  Unity會忽略以.起始命名的文件夾(例如 ".UnitTests/",".svn/"),放在這種文件夾中的資源不會被導入到Unity中,腳本也不會被編譯,同時在工程視圖中沒法看到此類型的文件夾。 (windows視窗下沒法命名爲以.起始命名的文件夾,在cmd中能夠經過mkdir .xxx來建立文件夾) (這種類型的文件夾在咱們開發中沒用到,有一個緣由多是在工程裏面作了svn外鏈,更新後不顯示.svn文件夾吧)java

 

Standard Assets

  在這個文件夾裏面的腳本將會被最早編譯,並且將會根據編寫腳本的語言來生成 Assembly-CSharp-firstpass 或 Assembly-UnityScript-firstpass 或 Assembly-Boo-firstpass , 參考這篇文章 http://docs.unity3d.com/Documentation/Manual/ScriptCompileOrderFolders.html 。 (這個文件夾在開發中暫時也沒用到 --)windows

 

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文件夾是開發中用的最多的一個文件夾了,作編輯擴展、發佈流程都要放到這裏面來作)svn

  在Editor文件夾中的腳本將不會被打包到發佈的遊戲中,它們僅僅只是在Editor模式中使用。函數

  整個工程目錄中能夠有多個Editor文件夾。ui

  須要注意的是:若是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"。spa

 

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  (例如讀取通信錄、微信分享等調用原生java功能接口的jar包編譯後放在此文件夾下)

 

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研究院之手遊開發中全部特殊的文件夾

相關文章
相關標籤/搜索