首页 > 解决方案 > 如何将assetbundle下载到IOS/Android的app文件夹中并从中获取所需的模型?

问题描述

在 AssetBundle 中,大约 5 个模型被命名为“厨房”,大约 3 个模型被命名为“家具”。然后我使用以下代码将它们创建到本地路径中:

[MenuItem("Assets/Build Home Assets")]
static void BuildKitchenAssets()
{
    BuildPipeline.BuildAssetBundles("/Users/ar/Desktop/HomeBundles",BuildAssetBundleOptions.ChunkBasedCompression,BuildTarget.iOS);
}

后来,我将这些文件上传到服务器。文件夹结构如下图所示: AssetbundleAllFiles

现在我希望将文件下载到手持设备文件夹(IOS/Android)中。这就是我想要实现的:

我想将它们动态添加到列表中(汉堡模型)。有几个疑问。我想要一种有效的方法来做到这一点。我应该将文件夹结构中的所有资产包文件下载到设备路径吗?如果已经下载,请不要再次下载该捆绑包。同时,如果我在“厨房”资产包中添加了新模型,它必须检查和更新包。

void Update()
{
    
}

IEnumerator GetBundles()
{
    using(UnityWebRequest uwr=UnityWebRequestAssetBundle.GetAssetBundle(url,XXXXXXXX,0))
    {
        yield return uwr.SendWebRequest();

        if (uwr.error != null)
        {
            throw new Exception("WWW download error: "+uwr.error);
        }
        AssetBundle bundle = DownloadHandlerAssetBundle.GetContent(uwr);
        if(AssetName==" ")
        {
            Instantiate(bundle.mainAsset);
        }
        else
        {
            //GameObject go=bundle.LoadAsset<GameObject>(AssetName);
            GameObject go = bundle.LoadAsset(AssetName) as GameObject;
            Instantiate(go);
        }
    }
    //How to save them into 'device' folder. For App purpose so need to connect
    //to the internet at the start and download.Then no need to download again.
    // Also check if there is any change in assetbundle.
}

标签: c#unity3dassetbundle

解决方案


使用新的Addressables 功能。它将自动处理下载到适当的位置。


推荐阅读