unity官方apiAssetBundle-LoadFromFileAsync - Unity 腳本 API
異步加載AB包
using UnityEngine;
using System.Collections;
using System.IO;
public class LoadFromFileAsyncExample : MonoBehaviour
{
IEnumerator Start()
{
var bundleLoadRequest = AssetBundle.LoadFromFileAsync(Path.Combine(Application.streamingAssetsPath, "myassetBundle"));
yield return bundleLoadRequest;
var myLoadedAssetBundle = bundleLoadRequest.assetBundle;
if (myLoadedAssetBundle == null)
{
Debug.Log("Failed to load AssetBundle!");
yield break;
}
var assetLoadRequest = myLoadedAssetBundle.LoadAssetAsync<GameObject>("MyObject");
yield return assetLoadRequest;
GameObject prefab = assetLoadRequest.asset as GameObject;
Instantiate(prefab);
myLoadedAssetBundle.Unload(false);
}
}
需要注意的是同一個(gè)ab包一次只能加載一個(gè),不可以同時(shí)加載,
報(bào)錯(cuò):The AssetBundle 'xxxxx' can't be loaded because another AssetBundle with the same files is already loaded.
如果AB包已經(jīng)加載過(guò)則先進(jìn)行卸載:
if (myLoadedAssetBundle != null)
{
myLoadedAssetBundle.Unload(false);//關(guān)鍵代碼
}
卸載AB包
1、卸載全部的目前沒(méi)有使用的資源: Resources.UnloadUnusedAssets()
2、卸載 AssetBundle 釋放其數(shù)據(jù):?AssetBundle.Unload(true/false);
3、卸載當(dāng)前已加載的所有 AssetBundle:?AssetBundle.UnloadAllAssetBundles(true/false)
當(dāng)?為 false 時(shí),將釋放當(dāng)前加載的捆綁包中的壓縮文件數(shù)據(jù),但已從捆綁包中加載的任何對(duì)象實(shí)例將保持不變。
UnloadAllAssetBundles不會(huì)中斷異步加載過(guò)程,如果已經(jīng)在進(jìn)行異步加載了此時(shí)調(diào)用AssetBundle.UnloadAllAssetBundles,那么這個(gè)AB包還是會(huì)加載出來(lái)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-857028.html
using UnityEngine;
public class AssetBundleManager : MonoBehaviour
{
public void LoadAssetBundle(string bundleName)
{
AssetBundle bundle = AssetBundle.LoadFromFile(bundleName);
if (bundle != null)
{
// 假設(shè)你有一個(gè)你想要加載的資源的名字
string assetName = "myAsset";
UnityEngine.Object asset = bundle.LoadAsset(assetName);
// 使用 asset ...
// 卸載AssetBundle
bundle.Unload(false);
// 如果確定沒(méi)有其他引用,可以進(jìn)一步釋放內(nèi)存
Resources.UnloadUnusedAssets();
System.GC.Collect();
}
}
}
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-857028.html
到了這里,關(guān)于【Unity】AssetBundle加載與卸載的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!