Unity中obb文件的路径方式有两种,一种是直接使用obb文件,另一种是将obb文件存储在Assets文件夹中,然后使用AssetBundle.LoadFromFile的方式加载。下面给出对应的解决方法。
在Unity项目中,将obb文件放置在Assets/Plugins/Android/obb文件夹下(若没有该文件夹则新建即可),然后在Unity中Build出apk包即可。在安装apk包的时候,obb文件会自动解压至Android/obb/包名文件夹/文件夹名。
在Unity项目中,将obb文件放置在Assets/StreamingAssets文件夹下(若没有该文件夹则新建即可)。然后在Unity中编写如下代码:
void Start()
{
StartCoroutine(LoadAssetBundleFromObb());
}
IEnumerator LoadAssetBundleFromObb()
{
// 获取obb文件路径
string obbFilePath = Application.dataPath + "!/assets/obb文件名称";
// 从obb文件中加载AssetBundle
UnityWebRequest webRequest = UnityWebRequestAssetBundle.GetAssetBundle(obbFilePath, 0);
yield return webRequest.SendWebRequest();
AssetBundle assetBundle = DownloadHandlerAssetBundle.GetContent(webRequest);
//从AssetBundle中加载资源
var prefab = assetBundle.LoadAsset("资源名称");
//删除AssetBundle
assetBundle.Unload(false);
}
这样编写的代码在打包成apk后也能正常运行,在应用安装时obb文件也会被解压至Android/obb/包名文件夹/文件夹名。