//通过AssetBundle资源名字加载并创建物体
- public GameObject CreateAndLoadAssetBundle(string bundleName,string objName=null)
- {
- //路径
- string url = Application.dataPath + "/" + "StreamingAssets/" + bundleName.ToLower() + ".assetbundle";
- byte[] stream = File.ReadAllBytes(url);
- ---------------------------------------------------------------------------------------------------------------------------
- //从内存 异步加载
- AssetBundleCreateRequest request = AssetBundle.LoadFromMemoryAsync(stream);
- AssetBundle bundle =request.assetBundle;
- ---------------------------------------------------------------------------------------------------------------------------
- //同步加载资源,从内存加载
- AssetBundle bundle = AssetBundle.LoadFromMemory(stream);
- --------------------------------------------------------------------------------------------------------------------------
- //异步从本地加载
- AssetBundleCreateRequest request = AssetBundle.LoadFromFileAsync(url);
- AssetBundle bundle =request.assetBundle;
- --------------------------------------------------------------------------------------------------------------------------
- //从本地加载
- AssetBundle bundle = AssetBundle.LoadFromFile(url);
- ---------------------------------------------------------------------------------------------------------------------------
- //使用WWW类加载
- WWW www = WWW.LoadFromCacheOrDownload(url,1);
- AssetBundle bundle =www.assetBundle;
- ---------------------------------------------------------------------------------------------------------------------------
- //UnityWebRequest下载可代替www
- UnityWebRequest request = UnityWebRequest.GetAssetBundle(url);
- AssetBundle bundle = (request.downloadHandler as DownloadHandlerAssetBundle).assetBundle;
- ---------------------------------------------------------------------------------------------------------------------------
- GameObject prefab = null;
- if (bundle==null)
- {
- return null;
- }
- //按照名字加载
- if (objName!=null)
- {
- prefab = bundle.LoadAsset(objName,typeof(GameObject))as GameObject;
- }//默认
- else
- {
- prefab = bundle.mainAsset as GameObject;
- }
- //创建物体
- GameObject go = GameObject.Instantiate(prefab)as GameObject;
- go.name = bundleName;
- //释放AssetBundel资源
- bundle.Unload(false);
- return go;
- }