1. 程式人生 > >【只怕沒有幾個人能說清楚】系列之二:Unity中的特殊文件夾

【只怕沒有幾個人能說清楚】系列之二:Unity中的特殊文件夾

物體 avi ebp time 編輯模式 tro hive 預覽 打包

參考:http://www.manew.com/thread-99292-1-1.html
1. 隱藏文件夾
以.開頭的文件夾會被忽略。在這種文件夾中的資源不會被導入,腳本不會被編譯。也不會出現在Project視圖中。這種文件我們可以在資源瀏覽器的時候,能找到這些文件。

2. Standard Assets
在這個文件夾中的腳本最先被編譯。一般是放一些Unity 內置的一些資源。
這個文件夾中的腳本會被導出到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使用的。當然它的功能更為的豐富,例如一些高級內置的shader文件,只有在Pro版才能起作用。

4. Editor

以Editor命名的文件夾允許其中的腳本訪問Unity Editor的API。如果腳本中使用了在UnityEditor命名空間中的類或方法,它必須被放在名為Editor的文件夾中。Editor文件夾中的腳本不會在build時被包含。
在項目中可以有多個Editor文件夾。[註意:如果在普通的文件夾下,Editor文件夾可以處於目錄的任何層級。如果在特殊文件夾下,那Editor文件夾必須是特殊文件夾的直接子目錄。]

5. Editor Default Resources

你可以把編輯器用到的一些資源放在這裏,比如圖片、文本文件、等等。它和Editor文件夾一樣都不會被打到最終發布包裏,僅僅用於開發時使用。你可以直接通過EditorGUIUtility.Load去讀取該文件夾下的資源,例如:
TextAsset text = EditorGUIUtility.Load(“1.txt")as TextAsset;

6. Plugins

Plugins文件夾用來放native插件。它們會被自動包含進build中去。註意這個文件夾只能是Assets文件夾的直接子目錄。
例如:Windows:dll文件;
Mac OS X:bundle文件;
Linux下:.so文件。
和Standard Assets一樣,這裏的腳本會更早的編譯,並且允許它們被之外的腳本訪問。

6.0. Plugins/x86 || x86_64 (一般PC平臺)

如果為32bit或64bit平臺創建遊戲,那麽這個文件夾下的native plugin文件會被自動的包含在遊戲build中。如果這個文件夾不存在,則Unity會查找Plugins文件夾下的native pluglins。
如果要創建universal build,建議你同時使用這兩個文件夾。然後將32bit和64bit的native plugins放進相應的文件夾中。
6.1. Plugins/android
在這個文件夾裏放入Java.jar文件。用於java語言的plugins。.so文件也會被包含進來。
官方文檔:http://docs.unity3d.com/Documentation/Manual/PluginsFor.html
6.2. Plugins/iOS
在這個文件夾放入.o、.m 、 .mm 、.c 、.cpp等文件,一般在IOS 平臺導出對應的文件。
官方文檔:http://docs.unity3d.com/Documentation/Manual/PluginsForIOS.html

7. Resources
Resources文件夾允許你在腳本中通過文件路徑和名稱來訪問資源。放在這一文件夾的資源永遠被包含進build中,即使它沒有被使用。因為Unity無法判斷腳本有沒有訪問了其中的資源。項目中可以有多個Resources文件夾,因此不建議在多個文件夾中放同名的資源。一旦build遊戲,Resources文件夾中的所有資源被打包進遊戲存放資源的archive中。這樣在遊戲的build中就不存在Resources文件夾了。即使腳本中仍然使用了資源在項目中的路徑。
官方文檔:http://docs.unity3d.com/Documentation/Manual/LoadingResourcesatRuntime.html
註意:當資源作為腳本變量被訪問時,這些資源在腳本被實例化後就被加載進內存。如果資源太大,你可能不希望它被這樣加載。那麽你可以將這些大資源放進Resources文件夾中,通過Resources.Load來加載。當不再使用這些資源了,可以通過Destroy物體,再調用Resources.UnloadUnusedAssets來釋放內存。
特點:
(1).文件夾內資源打包集成.asset 文件裏面,例如一些shader/material/prefab等資源文件;
(2).裏面的資源只能是只讀,不能動態修改,一般動態的更新的資源不雅放在這個文件夾內;
(3).通過主線程加載;
(4). Resources.Load ();加載資源
Resources.LoadAll ();加載所有資源
Resources.LoadAsync ();異步加載資源

8. Gizmos
Gizmos文件夾存放用Gizmos.DrawIcon方法使用的貼圖、圖標資源。放在Gizmos文件夾中的貼圖資源可以直接通過名稱使用,可以被Editor作為gizmo畫在屏幕上。這裏還是要說說OnDrawGizmos()方法,只要腳本繼承了MonoBehaviour後,並且在編輯模式下就會每一幀都執行它。發布的遊戲肯定就不會執行了,它只能用於在scene視圖中繪制一些小物件。比如要做攝像機軌跡,那麽肯定是要在Scene視圖中做一個預覽的線,那麽用Gizmos.DrawLine 和Gizmos.DrawFrustum就再好不過了。

9. WebPlayerTemplates
用來替換web build的默認網頁。這個文件夾中的腳本都不會被編譯。這個文件夾必須作為Assets文件夾的直接子目錄。

10. StreamingAssets
這裏的文件會被拷貝到build文件夾中,不會修改(移動和網頁版不同,他們會被嵌入到最終build文件中)。它們的路徑會因平臺而有差異,但都可以通過Application.streamingAssetsPath來訪問。
例如:有些遊戲為了讓所有的資源全部使用assetbundle,會把一些初始的assetbundle放在StreamingAssets目錄下,StreamingAssets目錄下的資源都是不壓縮的,而且它比較大會占空間 <ignore_js_op>

【只怕沒有幾個人能說清楚】系列之二:Unity中的特殊文件夾