【Unity基礎知識之三】Unity Assets目錄下的特殊資料夾名稱

Teng的世界發表於2015-08-03

Unity3D的特殊目錄名稱


Unity預留了一些目錄名稱,這些目錄有著特殊的含義。比較重要的有:
  • Resources
    這個目錄下的所有檔案都會被打包到釋出版本中,程式可以通過檔案路徑來訪問它們。這個太有用了,像RPG遊戲裡面很多策劃編輯的資料都可以儲存到這裡。可以使用UnityEngine.Resources.Load()方法載入,相關的類還有TextAsset。
    詳細的文件:http://docs.unity3d.com/Manual/LoadingResourcesatRuntime.html
  • Editor 
    在這裡可以存放一些編輯器擴充套件指令碼,這個目錄裡面的指令碼可以使用namespace UnityEditor。對於RPG專案來說,經常有上百個怪物這種編輯需求,如果每一個都要在編輯器裡面拖拖拉拉來建立Prefab,那豈不是很累?可以寫一個自動生成Prefab的指令碼,在所有資源匯入之後,自動建立Prefab供遊戲執行時呼叫。
  • Plugins
    這裡面就是放Native外掛的,而引入的其他包不必要放在這裡。它應該為目標平臺建立子目錄:"Plugins/Android"、"Plugins/iOS"等。
這些目錄還涉及到指令碼的編譯順序,詳細可參見手冊:http://docs.unity3d.com/Manual/ScriptCompileOrderFolders.html
還有其他一些更全面的特殊目錄名稱列表,可參見WIKI:http://wiki.unity3d.com/index.php/Special_Folder_Names_in_your_Assets_Folder

-------------------------------------------------------------------------------------------------------------------------------------------

1. 隱藏資料夾 

以.開頭的資料夾會被Unity忽略。在這種資料夾中的資源不會被匯入,指令碼不會被編譯。也不會出現在Project檢視中。 
2. Standard Assets 
在這個資料夾中的指令碼最先被編譯。 
這個資料夾中的指令碼會被匯出到Assembly-CSharp-firstpass, Assembly-UnityScript-firstpass 或 Assembly-Boo-firstpass專案中,依語言而定。參考http://docs.unity3d.com/Documentation/Manual/ScriptCompileOrderFolders.html 。在這個資料夾中的指令碼比其他指令碼都要先編譯。將指令碼放在這個資料夾裡,就可以用C#指令碼來訪問js指令碼或其他語言的指令碼。 
3. Pro Standard Assets 
跟Standard Assets相同,只不過裡面的檔案是給Pro版本的Unity使用的。 
4. Editor 
以Editor命名的資料夾允許其中的指令碼訪問Unity Editor的API。如果指令碼中使用了在UnityEditor名稱空間中的類或方法,它必須被放在名為Editor的資料夾中。Editor資料夾中的指令碼不會在build時被包含。 
在專案中可以有多個Editor資料夾。 
注意:如果在普通的資料夾下,Editor資料夾可以處於目錄的任何層級。如果在特殊資料夾下,那Editor資料夾必須是特殊資料夾的直接子目錄。 
5. Plugins 
Plugins資料夾用來放native外掛。它們會被自動包含進build中去。注意這個資料夾只能是Assets資料夾的直接子目錄。 
在Windows平臺下,native 外掛是dll檔案;Mac OS X下,是bundle檔案;Linux下,是.so檔案。 
跟Standard Assets一樣,這裡的指令碼會更早的編譯,允許它們被之外的指令碼訪問。 
5.1. Plugins/x86 
如果為32bit或64bit平臺建立遊戲,那麼這個資料夾下的native plugin檔案會被自動的包含在遊戲build中。如果這個資料夾不存在,則Unity會查詢Plugins資料夾下的native pluglins。 
5.2. Plugins/x86_64 
如果為32bit或64bit平臺建立遊戲,那麼這個資料夾下的native plugin檔案會被自動的包含在遊戲build中。如果這個資料夾不存在,則Unity會查詢Plugins資料夾下的native pluglins。 

如果要建立universal build,建議你同時使用這兩個資料夾。然後將32bit和64bit的native plugins放進相應的資料夾中。 
5.3. Plugins/Android 
在這個資料夾裡放入Java.jar檔案。用於java語言的plugins。.so檔案也會被包含進來。參考http://docs.unity3d.com/Documentation/Manual/PluginsForAndroid.html 
5.4. Plugins/iOS 
A limited, simple way to automatically add (as symbolic links) any .a, .m, .mm, .c, or .cpp files into the generated Xcode project. Seehttp://docs.unity3d.com/Documentation/Manual/PluginsForIOS.html 
If you need more control how to automatically add files to the Xcode project, you should make use of the PostprocessBuildPlayer feature. Doing so does not require you to place such files in the Plugins/iOS folder. Seehttp://docs.unity3d.com/Documentation/Manual/BuildPlayerPipeline.html 

6. Resources 
Resources資料夾允許你在指令碼中通過檔案路徑和名稱來訪問資源。但還是推薦使用直接引用來訪問資源。 
放在這一資料夾的資源永遠被包含進build中,即使它沒有被使用。因為Unity無法判斷指令碼有沒有訪問了其中的資源。 
專案中可以有多個Resources資料夾,因此不建議在多個資料夾中放同名的資源。 
一旦build遊戲,Resources資料夾中的所有資源被打包進遊戲存放資源的archive中。這樣在遊戲的build中就不存在Resources資料夾了。即使指令碼中仍然使用了資源在專案中的路徑。參考 http://docs.unity3d.com/Documentation/Manual/LoadingResourcesatRuntime.html 
注意:當資源作為指令碼變數被訪問時,這些資源在指令碼被例項化後就被載入進記憶體。如果資源太大,你可能不希望它被這樣載入。那麼你可以將這些大資源放進Resources資料夾中,通過Resources.Load來載入。當不再使用這些資源了,可以通過Destroy物體,再呼叫Resources.UnloadUnusedAssets來釋放記憶體。 
7. Editor Default Resources 
這是為editor 指令碼使用的資料夾。 
8. Gizmos 
Gizmos資料夾存放用Gizmos.DrawIcon方法使用的貼圖、圖示資源。放在Gizmos資料夾中的貼圖資源可以直接通過名稱使用,可以被Editor作為gizmo畫在螢幕上。 
9. WebPlayerTemplates 
用來替換web build的預設網頁。這個資料夾中的指令碼都不會被編譯。這個資料夾必須作為Assets資料夾的直接子目錄。 
10. StreamingAssets 
這裡的檔案會被拷貝到build資料夾中,不會修改(移動和網頁版不同,他們會被嵌入到最終build檔案中)。它們的路徑會因平臺而有差異,但都可以通過Application.streamingAssetsPath來訪問。 
參考http://docs.unity3d.com/Documentation/Manual/StreamingAssets.htmlhttp://docs.unity3d.com/Documentation/ScriptReference/Application-streamingAssetsPath.html。 

參考文獻:

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

http://blog.csdn.net/neil3d/article/details/38435507


相關文章