這里列舉出手游開發(fā)中用到了所有特殊文件夾碑宴。
1.Editor
Editor
文件夾可以在根目錄下挠阁,也可以在子目錄里,只要名子叫Editor就可以孝常。比如目錄:/xxx/xxx/Editor ?和 /Editor
是一樣的苟跪,無論多少個(gè)叫Editor的文件夾都可以廷痘。Editor下面放的所有資源文件或者腳本文件都不會(huì)被打進(jìn)發(fā)布包中,并且腳本也只能在編輯時(shí)使用件已。
一般呢會(huì)把一些工具類的腳本放在這里笋额,或者是一些編輯時(shí)用的DLL。
比如我們現(xiàn)在要做類似技能編輯器拨齐,那么編輯器的代碼放在這里是再好不過了鳞陨,因?yàn)閷?shí)際運(yùn)行時(shí)我們只需要編輯器生成的文件昨寞,而不需要編輯器的核心代碼瞻惋。
2.Editor Default Resources
Editor
Default Resources注意中間是有空格的厦滤,它必須放在Project視圖的根目錄下,如果你想放在/xxx/xxx/Editor
Default Resources
這樣是不行的歼狼。你可以把編輯器用到的一些資源放在這里掏导,比如圖片、文本文件羽峰、等等趟咆。它和Editor文件夾一樣都不會(huì)被打到最終發(fā)布包里,僅僅用于開發(fā)時(shí)
使用梅屉。你可以直接通過EditorGUIUtility.Load去讀取該文件夾下的資源值纱。
TextAsset text = ???? EditorGUIUtility . Load ( "test.txt" ) as TextAsset ;
Debug . Log ( text . text ) ;
3.Gizmos
我覺得這個(gè)文件夾其實(shí)沒什么用處,如下代碼所示它可以在Scene視圖里給某個(gè)坐標(biāo)繪制一個(gè)icon坯汤。它的好處是可以傳一個(gè)Vecotor3 作為圖片顯示的位置虐唠。 參數(shù)2就是圖片的名子,當(dāng)然這個(gè)圖片必須放在Gizmos文件夾下面惰聂。
void OnDrawGizmos ( ) {
Gizmos . DrawIcon ( transform . position , "0.png" , true ) ;
}
如果只想掛在某個(gè)游戲?qū)ο笊砩辖ィ敲丛贗nspecotr里面就可以直接設(shè)置。
這
里還是要說說OnDrawGizmos()方法搓幌,只要腳本繼承了MonoBehaviour后杆故,并且在編輯模式下就會(huì)每一幀都執(zhí)行它。發(fā)布的游戲肯定就不
會(huì)執(zhí)行了溉愁,它只能用于在scene視圖中繪制一些小物件处铛。比如要做攝像機(jī)軌跡,那么肯定是要在Scene視圖中做一個(gè)預(yù)覽的線叉钥,那么用
Gizmos.DrawLine 和Gizmos.DrawFrustum就再好不過了罢缸。
4.Plugins
如果做手機(jī)游戲開發(fā)一般 andoird 或者 ios 要接一些sdk 可以把sdk依賴的庫文件 放在這里,比如 .so .jar .a 文件投队。這樣打完包以后就會(huì)自動(dòng)把這些文件打在你的包中枫疆。
5.Resources
可
以在根目錄下,也可以在子目錄里敷鸦,只要名子叫Resources就可以息楔。比如目錄:/xxx/xxx/Resources ?和 /Resources
是一樣的,無論多少個(gè)叫Resources的文件夾都可以扒披。Resources文件夾下的資源不管你用還是不用都會(huì)被打包進(jìn).apk或者.ipa
Resource.Load :編輯時(shí)和運(yùn)行時(shí)都可以通過Resource.Load來直接讀取值依。
Resources.LoadAssetAtPath() :它可以讀取Assets目錄下的任意文件夾下的資源,它可以在編輯時(shí)或者編輯器運(yùn)行時(shí)用碟案,它但是它不能在真機(jī)上用愿险,它的路徑是”Assets/xx/xx.xxx” 必須是這種路徑,并且要帶文件的后綴名价说。
AssetDatabase.LoadAssetAtPath():它可以讀取Assets目錄下的任意文件夾下的資源辆亏,它只能在編輯時(shí)用风秤。它的路徑是”Assets/xx/xx.xxx” 必須是這種路徑,并且要帶文件的后綴名扮叨。
我
覺得在電腦上開發(fā)的時(shí)候盡量來用Resource.Load() 或者
Resources.LoadAssetAtPath()?缤弦,假如手機(jī)上選擇一部分資源要打assetbundle,一部分資源
Resource.Load().那么在做.apk或者.ipa的時(shí)候 現(xiàn)在都是用腳本來自動(dòng)化打包彻磁,在打包之前
可以用AssetDatabase.MoveAsset()把已經(jīng)打包成assetbundle的原始文件從Resources文件夾下移動(dòng)出去在打包碍沐,
這樣打出來的運(yùn)行包就不會(huì)包行多余的文件了。打完包以后再把移動(dòng)出去的文件夾移動(dòng)回來衷蜓。
6. StreamingAssets
這
個(gè)文件夾下的資源也會(huì)全都打包在.apk或者.ipa
它和Resources的區(qū)別是累提,Resources會(huì)壓縮文件,但是它不會(huì)壓縮原封不動(dòng)的打包進(jìn)去磁浇。并且它是一個(gè)只讀的文件夾刻恭,就是程序運(yùn)行時(shí)只能讀
不能寫。它在各個(gè)平臺(tái)下的路徑是不同的扯夭,不過你可以用Application.streamingAssetsPath
它會(huì)根據(jù)當(dāng)前的平臺(tái)選擇對(duì)應(yīng)的路徑鳍贾。
有
些游戲?yàn)榱俗屗械馁Y源全部使用assetbundle,會(huì)把一些初始的assetbundle放在StreamingAssets目錄下交洗,運(yùn)行程序的時(shí)
候在把這些assetbundle拷貝在Application.persistentDataPath目錄下骑科,如果這些assetbundle有更新的
話,那么下載到新的assetbundle在把Application.persistentDataPath目錄下原有的覆蓋掉构拳。
因?yàn)锳pplication.persistentDataPath目錄是應(yīng)用程序的沙盒目錄咆爽,所以打包之前是沒有這個(gè)目錄的,直到應(yīng)用程序在手機(jī)上安裝完畢才有這個(gè)目錄置森。
StreamingAssets目錄下的資源都是不壓縮的斗埂,所以它比較大會(huì)占空間,比如你的應(yīng)用裝在手機(jī)上會(huì)占用100M的容量凫海,那么你又在StreamingAssets放了一個(gè)100M的assetbundle呛凶,那么此時(shí)在裝在手機(jī)上就會(huì)在200M的容量。