Unity 4.x 資源加載
阿新 • • 發佈:2018-06-02
通過 sha rom ready 因此 mono empty creat mon
using UnityEngine; using System.Collections; using System.IO; public class LoadResource : MonoBehaviour { //assetbundle 的後綴實際上可以隨意自定義的 string PathAssetBundle = "D:/LgsTest/ResourcePath/Cube.assetbundle"; void Start() { //StartCoroutine(LoadFromMemoryAsync()); //LoadFromMemorySync(); //LoadFromLocalFile(); StartCoroutine(LoadFromWWW()); } #region 第一種加載AB的方式,從內存中加載 //通過Bundle的二進制數據,異步創建AssetBundle對象。完成後會在內存中創建較大的WebStream。 //調用時,Bundle的解壓是異步進行的,因此對於未壓縮的Bundle文件,該接口與CreateFromMemoryImmediate等價。 IEnumerator LoadFromMemoryAsync() { AssetBundleCreateRequest request = AssetBundle.CreateFromMemory(File.ReadAllBytes(PathAssetBundle)); yield return request; AssetBundle bundle = request.assetBundle; Instantiate(bundle.Load("Cube")); } void LoadFromMemorySync() { AssetBundle bundle = AssetBundle.CreateFromMemoryImmediate(File.ReadAllBytes(PathAssetBundle)); Instantiate(bundle.Load("Cube")); } #endregion #region 第二種加載AB的方式,從本地中加載 //加載的資源只能是未壓縮的(即在打包資源的時候要加上 BuildAssetBundleOptions.UncompressedAssetBundle),壓縮過的資源會加載失敗 //通過未壓縮的Bundle文件,同步創建AssetBundle對象,這是最快的創建方式。創建完成後只會在內存中創建較小的SerializedFile,而後續的AssetBundle.Load需要通過IO從磁盤中獲取。 void LoadFromLocalFile() { AssetBundle bundle = AssetBundle.CreateFromFile(PathAssetBundle); Instantiate(bundle.Load("Cube")); } #endregion #region 第三種加載AB的方式,通過WWW加載 IEnumerator LoadFromWWW() { while (!Caching.ready) yield return null; WWW www = GetWWWInstance(false, PathAssetBundle); yield return www; if (!string.IsNullOrEmpty(www.error)) { Debug.Log(www.error); yield break; } AssetBundle bundle = www.assetBundle; Instantiate(bundle.Load("Cube")); } //WWW對象的獲取方式有兩種 //方式一 :加載Bundle文件並獲取WWW對象,完成後會在內存中創建較大的WebStream //方式二:加載Bundle文件並獲取WWW對象,同時將解壓形式的Bundle內容存入磁盤中作為緩存(如果該Bundle已在緩存中,則省去這一步), // 完成後只會在內存中創建較小的SerializedFile,而後續的AssetBundle.Load需要通過IO從磁盤中的緩存獲取。 WWW GetWWWInstance(bool isNew, string url) { WWW www = null; if (isNew) www = new WWW(url); else www = WWW.LoadFromCacheOrDownload(url, 0); return www; } #endregion }
Unity 4.x 資源加載