1. 程式人生 > >Unity的幾個特殊文件夾

Unity的幾個特殊文件夾

批量打包 釋放 load() windows unit 子目錄 sources 引用 不同包

1.以.開頭的文件夾會被unity忽略,資源不會被導入,腳本不會編譯。

2.Standard Assets和Pro Standard Assets:在這個文件夾中的腳本最先被編譯。

3.Editor:以Editor命名的文件夾允許其中的腳本訪問Unity Editor的API。如果腳本中使用了在UnityEditor命名空間中的類或方法,它必須被放在名為Editor的文件夾中,在項目中可以有多個Editor文件夾。

4.Plugins:Plugins文件夾用來放native插件。他們會被自動包含進Build中去,註意這個文件夾只能是Assets文件夾的直接子目錄。

在windows平臺下,native插件是dll文件,這些腳本會更早的編譯。

5.Resources:Resources文件夾允許你在腳本中通過文件路徑和名稱來訪問資源。但還是推薦使用直接引用來訪問資源。Resources.Load來加載。當不再使用這些資源了,可以通過Destroy物體,再調用Resources.UnloadUnusedAssets來釋放內存。

6.Editor Default Resources:這是為editor腳本使用的文件夾。

7.Gizmos:Gizmos文件夾存放用Gizmos.DrawIcon方法使用的貼圖、圖標資源。放在Gizmos文件夾中的貼圖資源可以直接通過名稱使用,可以被Editor作為gizmo畫在屏幕上。

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

9.StreamingAssets:這裏的文件會被拷貝到build文件夾中,不會修改(移動和網頁版不同,他們會被嵌入到最終build文件中)。它們的路徑會因平臺而有差異,但都可以通過Application.streamingAssetsPath來訪問。

關於打包:

1.Resources文件夾

Resources文件夾是一個只讀的文件夾,通過Resources.Load()來讀取對象。因為這個文件夾下的所有資源都可以運行時來加載,所以Resources文件夾下的所有東西都會被無條件的打到發布包中。建議這個文件夾下只放Prefab或者一些Object對象,因為Prefab會自動過濾掉對象上不需要的資源。舉個例子我把模型文件還有貼圖文件都放在了Resources文件夾下,但是我有兩張貼圖是沒有在模型上用的,那麽此時這兩張沒用的貼圖也會被打包到發布包中。假如這裏我用Prefab,那麽Prefab會自動過濾到這兩張不被用的貼圖,這樣發布包就會小一些了。

2.StreamingAssets

StreamingAssets文件夾也是一個只讀的文件夾,但是它和Resources有點區別,Resources文件夾下的資源會進行一次壓縮,而且也會加密,不使用點特殊辦法是拿不到原始資源的。但是StreamingAssets文件夾就不一樣了,它下面的所有資源不會被加密,然後是原封不動的打包到發布包中,這樣很容易就拿到裏面的文件。所以StreamingAssets適合放一些二進制文件,而Resources更適合放一些GameObject和Object文件。 StreamingAssets 只能用過www類來讀取!!

3. 最後凡是在Hierarchy視圖對象引用過的資源文件也會被無條件打包到發布包中

如果有一部分文件可能沒有在Resources文件夾下也沒有在StreamingAssets文件夾下,也沒有被Hierarchy視圖遊戲對象引用,那麽這類資源是不會被打包到發布包中的。在處理不同包對應不同資源包的時候,盡量讓可配置的資源放在Resources 或StreamingAssets文件夾下,運行的時候程序動態的來讀取它們,最後顯示在遊戲中就可以了。 在批量打包前,在Project視圖下創建不同包的資源文件夾, 然後腳本 AssetDatabase 動態的將資源拷貝至Resources或StreamingAssets 文件夾中

Unity的幾個特殊文件夾