关于AssetBundle中发布到安卓端,资源无法加载的问题

关于AssetBundle中发布到安卓端,资源无法加载的问题

问题的根本还是路径问题。
当AsetBundle打包成功后,必须将打包过的资源放入SteamingAsset文件夹下,便于读取
打包代码为:

using UnityEngine;
using System.Collections;
using UnityEditor;
using System.IO;
public class BuildBoundle : MonoBehaviour {

    [MenuItem("Assets/Build Bundle")]
    public static void CreateBundleAll()
    {

        BuildPipeline.BuildAssetBundles("Assets/StreamingAssets", BuildAssetBundleOptions.ChunkBasedCompression,BuildTarget.Android);
    }
}

打包后效果:
这里写图片描述
打包成功后开始进行Load代码的编写,代码片段如下:

void Load_texture()
    {
        //加载图片
        assetbundle = AssetBundle.LoadFromFile(Application.dataPath + "!assets/test_texture");
        //text_Err.text = assetbundle.name;
        text.text = "Create";
    }

注意!!!
打包过的资源必须放入SteamingAsset文件夹下,这是保证在安卓端无错误的前提。
当编写LoadFromFile()方法时,必须要搞清楚加载资源的路径,路径错误,则加载失败。因为已经将打包过的资源放入SteamingAsset文件夹下,且SteamingAsset文件夹是Unity的默认文件夹,所有在加载资源时,其路径上不可再附上SteamingAsset,即LoadFromFile()内的路径应该是Application.dataPath + “!assets/test_texture” ,test_texture为你的资源包名称。

而Application.streamingAssetsPath与Application.dataPath的区别是:
Application.streamingAssetsPath =jar:file:///data/app/com.xxx.xxx-1.apk!/assets
Application.dataPath+”!assets” = /data/app/com.xxx.xxx-1.apk!assets

而发布到安卓端时,需要 /data/app/com.xxx.xxx-1.apk!assets这样的路径,所有选择Application.dataPath。
这样发布到安卓端时就可以正常的加载包了。

猜你喜欢

转载自blog.csdn.net/znwhahaha/article/details/81207886