关于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。
这样发布到安卓端时就可以正常的加载包了。