Unity3D研究院之手遊開發中全部特殊的文件夾(assetbundle與Application.persistentDataPath)

1.Editorios


Editor文件夾能夠在根目錄下,也能夠在子目錄裏,只要名子叫Editor就能夠。好比目錄:/xxx/xxx/Editor  和 /Editor 是同樣的,不管多少個叫Editor的文件夾均可以。Editor下面放的全部資源文件或者腳本文件都不會被打進發布包中,而且腳本也只能在編輯時使用。通常呢會把一些工具類的腳本放在這裏,或者是一些編輯時用的DLL。 好比咱們如今要作相似技能編輯器,那麼編輯器的代碼放在這裏是再好不過了,由於實際運行時咱們只須要編輯器生成的文件,而不須要編輯器的核心代碼。編輯器


2.Editor Default Resourceside


Editor Default Resources注意中間是有空格的,它必須放在Project視圖的根目錄下,若是你想放在/xxx/xxx/Editor Default Resources 這樣是不行的。你能夠把編輯器用到的一些資源放在這裏,好比圖片、文本文件、等等。它和Editor文件夾同樣都不會被打到最終發佈包裏,僅僅用於開發時使用。你能夠直接經過EditorGUIUtility.Load去讀取該文件夾下的資源。工具


 

TextAsset text =      EditorGUIUtility . Load ( "test.txt" ) as TextAsset ;spa


Debug . Log ( text . text ) ;orm


3.Gizmos對象


我以爲這個文件夾其實沒什麼用處,以下代碼所示它能夠在Scene視圖裏給某個座標繪製一個icon。它的好處是能夠傳一個Vecotor3 做爲圖片顯示的位置。 參數2就是圖片的名子,固然這個圖片必須放在Gizmos文件夾下面。繼承


 

void OnDrawGizmos ( ) {遊戲


Gizmos . DrawIcon ( transform . position , "0.png" , true ) ;圖片


}


若是隻想掛在某個遊戲對象身上,那麼在Inspecotr裏面就能夠直接設置。。

這裏仍是要說說OnDrawGizmos()方法,只要腳本繼承了MonoBehaviour後,而且在編輯模式下就會每一幀都執行它。發佈的遊戲確定就不會執行了,它只能用於在scene視圖中繪製一些小物件。好比要作攝像機軌跡,那麼確定是要在Scene視圖中作一個預覽的線,那麼用Gizmos.DrawLine 和Gizmos.DrawFrustum就再好不過了。

4.Plugins

若是作手機遊戲開發通常 andoird 或者 ios 要接一些sdk 能夠把sdk依賴的庫文件 放在這裏,好比 .so .jar .a 文件。這樣打完包之後就會自動把這些文件打在你的包中。

5.Resources

能夠在根目錄下,也能夠在子目錄裏,只要名子叫Resources就能夠。好比目錄:/xxx/xxx/Resources  和 /Resources 是同樣的,不管多少個叫Resources的文件夾均可以。Resources文件夾下的資源無論你用仍是不用都會被打包進.apk或者.ipa

Resource.Load :編輯時和運行時均可以經過Resource.Load來直接讀取。

Resources.LoadAssetAtPath() :它能夠讀取Assets目錄下的任意文件夾下的資源,它能夠在編輯時或者編輯器運行時用,它可是它不能在真機上用,它的路徑是」Assets/xx/xx.xxx」 必須是這種路徑,而且要帶文件的後綴名。

AssetDatabase.LoadAssetAtPath():它能夠讀取Assets目錄下的任意文件夾下的資源,它只能在編輯時用。它的路徑是」Assets/xx/xx.xxx」 必須是這種路徑,而且要帶文件的後綴名。

我以爲在電腦上開發的時候儘可能來用Resource.Load() 或者 Resources.LoadAssetAtPath() ,假如手機上選擇一部分資源要打assetbundle,一部分資源Resource.Load().那麼在作.apk或者.ipa的時候 如今都是用腳原本自動化打包,在打包以前 能夠用AssetDatabase.MoveAsset()把已經打包成assetbundle的原始文件從Resources文件夾下移動出去在打包,這樣打出來的運行包就不會包行多餘的文件了。打完包之後再把移動出去的文件夾移動回來。

6. StreamingAssets

這個文件夾下的資源也會全都打包在.apk或者.ipa 它和Resources的區別是,Resources會壓縮文件,可是它不會壓縮原封不動的打包進去。而且它是一個只讀的文件夾,就是程序運行時只能讀 不能寫。它在各個平臺下的路徑是不一樣的,不過你能夠用Application.streamingAssetsPath 它會根據當前的平臺選擇對應的路徑。

有些遊戲爲了讓全部的資源所有使用assetbundle,會把一些初始的assetbundle放在StreamingAssets目錄下,運行程序的時候在把這些assetbundle拷貝在Application.persistentDataPath目錄下,若是這些assetbundle有更新的話,那麼下載到新的assetbundle在把Application.persistentDataPath目錄下原有的覆蓋掉。(終於知道手遊第一次進入時解壓資源是在幹什麼了!)

由於Application.persistentDataPath目錄是應用程序的沙盒目錄,因此打包以前是沒有這個目錄的,直到應用程序在手機上安裝完畢纔有這個目錄。

StreamingAssets目錄下的資源都是不壓縮的,因此它比較大會佔空間,好比你的應用裝在手機上會佔用100M的容量,那麼你又在StreamingAssets放了一個100M的assetbundle,那麼此時在裝在手機上就會在200M的容量。

今天就到這裏了,若是有問題歡迎你們與@雨鬆MOMO一塊兒討論。嘿嘿。

相關文章
相關標籤/搜索