Unity3D研究院之Assetbundle的使用
注意:在測試的時候把plateform不要設定成webplayer 這樣你會減少很多麻煩
1.建立Assetbundle
無論是模型資源還是UI資源,最好是先把他們放在Prefab中,然後在做成Assetbundle。我們以模型來舉例,Assetbundle中可以放一個模型、也可以放多個模型,它是非常靈活了那麼最需要考慮的就是模型空間佔用的問題。
比如我們有兩個完全一樣的模型,但是他們身上繫結的指令碼不一樣,此時需要把這兩個模型放在兩個不同Prefab中。如下圖所示,我們分別對這兩個Prefab打包,我們可以清晰的看到兩個相同的Prefab打包在一起只佔1M空間,而將他們分別打包會佔1 + 1 = 2M空間。 Prefab在打包的同時會把模型身上的所有材質、貼圖、元件、指令碼全部包含進去。
由此可得相同的模型儘量打包在一起,他們會公用一套資原始檔。不相同的模型儘量分開打包,相同模型具有不同的指令碼、元件的話把他們放在不同的Prefab中,最後把這些Prefab一起打包在一個Assetbundle中。如下圖所示,現在Project檢視中選擇需要打包的Prefab,然後在導航選單欄中選擇Create Assetbundles Main表示分別打包、Create AssetBundles All表示將他們打包在一起。
這兩個prefab檔案都指向了同一個模型,為了讓它倆有所區別,我給它倆綁定了相同的指令碼,但是指令碼中的引數是不同的。在編輯器上給每個Prefab賦值一個不同的名子,然後在Awake方法中進行輸出。
1 2 3 4 5 6 7 8 9 10 11 12 13 | usingUnityEngine; usingSystem.Collections; publicclassScript:MonoBehaviour { publicstringname; voidAwake() { Debug.Log("my name is "+name); } } |
Create Assetbundles Main : 分開打包,會生成兩個Assetbundle。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | [MenuItem("Custom Editor/Create AssetBunldes Main")] staticvoidCreateAssetBunldesMain() { //獲取在Project檢視中選擇的所有遊戲物件 Object[]SelectedAsset=Selection.GetFiltered(typeof(Object),SelectionMode.DeepAssets); //遍歷所有的遊戲物件 foreach(Objectobj inSelectedAsset) { stringsourcePath=AssetDatabase.GetAssetPath(obj); //本地測試:建議最後將Assetbundle放在StreamingAssets資料夾下,如果沒有就建立一個,因為移動平臺下只能讀取這個路徑 //StreamingAssets是隻讀路徑,不能寫入 //伺服器下載:就不需要放在這裡,伺服器上客戶端用www類進行下載。 stringtargetPath=Application.dataPath+"/StreamingAssets/"+obj.name+".assetbundle"; if(BuildPipeline.BuildAssetBundle(obj,null,targetPath,BuildAssetBundleOptions.CollectDependencies)){ Debug.Log(obj.name+"資源打包成功"); } else { Debug.Log(obj.name+"資源打包失敗"); } } //重新整理編輯器 AssetDatabase.Refresh(); } |
最核心的方法其實就它:
BuildPipeline.BuildAssetBundle (obj, null, targetPath, BuildAssetBundleOptions.CollectDependencies)
引數1:它只能放一個物件,因為我們這裡是分別打包,所以通過迴圈將每個物件分別放在了這裡。
引數2:可以放入一個數組物件。
預設情況下打的包只能在電腦上用,如果要在手機上用就要新增一個引數。
Android上:
BuildPipeline.BuildAssetBundle (obj, null, targetPath, BuildAssetBundleOptions.CollectDependencies,BuildTarget.Android)
IOS上:
BuildPipeline.BuildAssetBundle (obj, null, targetPath, BuildAssetBundleOptions.CollectDependencies,BuildTarget.iPhone)
另外,電腦上和手機上打出來的Assetbundle不能混用,不同平臺只能用自己的。
Create AssetBundles All:將所有物件打包在一個Assetbundle中。
1
相關推薦Unity3D研究院之Assetbundle的原理上面MOMO已經將Assetbundle 的使用原理大致介紹了一下 ,我們在談談移動平臺。指令碼不能更新是移動平臺下最大的傷,這就意味著開發者無法繞過App store和 google Play這種線上商店升級應用程式。唯一能做到的就是更新資源、舉個例子,遊戲中在處理版本升級時,一般會有個大 Unity3D研究院之Assetbundle的使用注意:在測試的時候把plateform不要設定成webplayer 這樣你會減少很多麻煩 1.建立Assetbundle 無論是模型資源還是UI資源,最好是先把他們放在Prefab中,然後在做成Assetbundle。我們以模型來舉例,A Unity3D研究院之將UI的點擊事件滲透下去(轉)一個 響應 http void ons cti ive down point 轉自 http://www.xuanyusong.com/archives/4241 處理UI還有3D模型的點擊推薦使用UGUI的這套事件系統,因為使用起來比較簡潔,不需要自己用代碼來發送射線 Unity3D研究院之MAC&Windows跨平臺解析Excel轉載註明出處:http://www.xuanyusong.com/archives/2429 Excel 和 ICSharpCode.SharpZipLib 是第三方開發包(後面我會附帶下載地址的), 這個兩個東西必須存在。這個開發包是跨平臺的,並且完全獨立不依賴微軟的那一套東 Unity3D研究院之MAC&Windows跨平臺解析ExcelExcel 和 ICSharpCode.SharpZipLib 是第三方開發包(後面我會附帶下載地址的), 這個兩個東西必須存在。這個開發包是跨平臺的,並且完全獨立不依賴微軟的那一套東東。即時你的電腦中沒有安裝Excel也同樣是可以很好的解析 通過程式碼來解析U Unity3D研究院之mac上從.ipa中提取unity3D遊戲資源(六十六)感謝今天某大神(既然是大神名子我當然要保密嘍)告訴我Disunity更新了,不然我還不知道。以前很多人都說用Disunity提取出了Unity3D資源,但是我在Mac上從來沒有成功過,一直在報錯。https://github.com/ata4/disunity/re 轉載 雨鬆MOMO 2014年07月16日 於 雨鬆MOMO程式研究院 發表 Unity3D研究院之Time.timeScale、遊戲暫停(七十四)專案裡面一直在用Time.timeScale來做遊戲的 1倍 2倍整體加速,今天我仔細看了一下Time.timeScale才發現之前我理解錯了一些東西。 Time.timeScale可以控制Update 和LateUpdate 的執行速度,舉個例子說明一下。 Unity3D研究院之mac上從.ipa中提取unity3D遊戲資源http://blog.csdn.net/dl_hum/article/details/28440983 感謝今天某大神(既然是大神名子我當然要保密嘍)告訴我Disunity更新了,不然我還不知道。以前很多人都說用Disunity提取出了Unity3D資源,但是我在Mac上 Unity3D研究院之C#使用Socket與HTTP連線伺服器傳輸資料包最近專案中需要使用HTTP與Socket,把自己這段時間學習的資料整理一下。有關Socket與HTTP的基礎知識MOMO就不贅述拉,不懂得朋友自己谷歌吧。我們專案的需求是在登入的時候使用HTTP請求,遊戲中其它的請求都用Socket請求,比如人物移動同步座標,同步關卡 Unity3D研究院之指令碼批量打包渠道包研究static void GenericBuild(string[] scenes, string target_dir, BuildTarget build_target, BuildOptions build_options) Unity3D研究院之非同步載入遊戲場景與非同步載入遊戲資源進度條(三十一)非同步任務相信大家應該不會陌生,那麼本章內容MOMO將帶領大家學習Unity中的一些非同步任務。在同步載入遊戲場景的時候通常會使用方法 Application.LoadLevel(“yourScene”); 這句程式碼執行完畢後程序會幹什麼呢??如下圖所示,這是我隨便找了一個遊戲場景 Unity3D基礎學習之AssetBundle 資源包建立與載入前幾天做了AssentBundle的例子,遇到了問題,在論壇上問了三天都沒人解答,最後在一個朋友的幫助下解決了。下面介紹AssentBundle。 AssetBundles讓你通過WWW類流式載入額外的資源並在執行時例項化它們。AssetBundles通過BuildPipe Unity3d之AssetBundle打包與讀取一、建立Assetbundle在Unity3D開發的遊戲中,無論模型,音訊,還是圖片等,我們都做成Prefab,然後打包成Assetbundle,方便我們後面的使用,來達到資源的更新。 一個Assetbundle可以打包一個模型(這裡的模型不單單指的是預製模型,可 Unity3d修煉之路:遊戲開發中,3d數學知識的練習【1】(不斷更新.......)turn tor rdo pre 長度 scrip 縮放 unity3d float #pragma strict public var m_pA : Vector3 = new Vector3(2.0f, 4.0f, 0.0f); public var m_pB : Unity資源解決方案之AssetBundle保留 裝包 方法 bundle 以及 pipe 用法 遊戲 cnblogs 1、什麽是AssetBundle AssetBundle是Unity pro提供的一種用來存儲資源的文件格式,它可以存儲任意一種Unity引擎能夠識別的資源,如Scene、Mesh、Material Unity資源打包之Assetbundlenas rar 啟用 大致 ebp 掛載 href 交叉 bundle 本文原創版權歸 csdn janeky 全部。轉載請具體註明原創作者及出處,以示尊重。 作者:janeky 原文:http://blog.csdn.net/janeky/article/detail Unity3D研究之多語言用中文做KEY一個 階段 txt mon 多語 適合新手 inf 優點 app 做多語言的時候用中文做KEY絕對是有100%的優點,假設用英文表示那麽代碼裏面給文字賦值的地方全都是英文。寫的代碼多了以後維護起來就沒有人能看懂了,或 Unity3d 5.x AssetBundle打包與加載too sset gre def 同時 adb adas util 推薦 1.AssetBundle打包 unity 5.x版本AssetBundle打包,只需要設置好AssetBundle的名稱後,unity會自動將其打包,無需處理其他,唯獨需要做的是設置好個AssetB Unity3D — — UGUI之RectTransformunity3 rect com etc unit ans pix gui DPoS Mask.GetComponent<RectTransform>().anchoredPosition(子物體) = hotKey_image.rectTransform.anc Unity3D引擎之高階渲染技術分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!   |