在Unity Android中将Assetbundle与流式资产文件夹一起使用

时间:2019-10-08 13:21:00

标签: android unity3d

我正在加载本地资产束,该束位于Unity游戏中的流资产文件夹下。我正在使用一个简单的代码来做到这一点:

Assetbundle assetbundle = AssetBundle.LoadFromFile(Path.Combine(Application.streamingAssetsPath,"myresource"));

此代码可以很好地运行,但是根据 Unity文档和论坛,由于资产实际上会被压缩到这样的路径:jar://网址。

以下语句来自Unity文档: 要在无法直接访问流媒体资产文件的平台(如Android和WebGL)上读取流媒体资产,请使用UnityWebRequest。

我创建了一个aab文件,并在ARMv7和AMRv64设备中测试了此代码,并且运行良好。

Unity的文档通常是过时的,所以我真的很想知道是否应该将此代码移至生产环境。

有人可以阐明这一点吗?他们以某种方式解决了这个问题吗?

2 个答案:

答案 0 :(得分:1)

它正在按预期工作,并且您已按照文档进行操作。干得好,这里没问题。

在较早的时候,推荐的方法是WWW类,但是现在不推荐使用该类。 Unity 2018.4的有关此文件的文档已更改,这是最近的事情。

答案 1 :(得分:0)

Page on StreamingAssets 确实是这样说的

<块引用>

在 Android 和 WebGL 等平台上读取流媒体资源 ,如果您无法直接访问流式资产文件,请使用 UnityWebRequest。有关示例,请参阅 Application.streamingAssetsPath。

但是 here is the reply from Unity 在论坛上(以及相关的 "Fixed" Unity Issue),所以即使在 5.3.* 中,bundle 的问题也得到了解决,您应该能够在 Android 上使用 AssetBundle.LoadFromFile。 StreamingAssets 文档似乎是正确的,只是没有提到使用 AssetBundle.LoadFromFile 读取资产的特殊情况。 LoadFromFile documentation 也没有提及,但以流媒体资源路径为例。

还有一种替代方法可以使用 BetterStreamingAssets 在 apk 中构建文件及其偏移量的映射,然后将正确的偏移量作为 AssetBundle.LoadFromFile 参数之一传递,尽管不确定它如何处理在这种情况下压缩。