【问题标题】:How to save AssetBundle on device?如何在设备上保存 AssetBundle?
【发布时间】:2020-04-17 19:20:04
【问题描述】:

我有一个游戏应用程序,一旦我的用户达到 25 级 - 我想下载未包含在安装中的新图片(壁纸和角色),我可以使用 assetBundle 来完成。 但我只想下载一次assetBundle并将其(永久)保存在设备上。 到目前为止我的代码 -

AssetBundle myLoadedAssetBundle = AssetBundle.LoadFromFile(@"C:\ab\level25"); *path will be a server
Sprite newSprite = myLoadedAssetBundle.LoadAsset<Sprite>("Assets/pic1.jpg");
....

我读了一些关于LoadFromCacheOrDownload 的信息,但它似乎已经过时,也不确定它是否在重新启动后删除了assetbundle 对象。 我基本上想在我的设备上保存“myLoadedAssetBundle”对象,并在需要时从中提取我的照片,这样我的用户就不必连接到互联网并再次重新下载文件

【问题讨论】:

    标签: c# unity3d assets assetbundle


    【解决方案1】:

    您可以将资产包本身存储在 PersistentDataPath 中,或者打开它并将提取的内容存储在托管文件夹中。

    存储内容:

    File.WriteAllBytes(Application.persistentDataPath + "/some/file");
    

    要读取资产:

    var data = File.ReadAllBytes(Application.persistentDataPath + "/some/file");
    

    读取存储的assetBundle:

    AssetBundle bundleLoadRequest = AssetBundle.LoadFromFile(Application.persistentDataPath + "/some/bundle");
    

    【讨论】:

    • 你应该从不简单地使用字符串连接+ "/" 系统路径!而是使用Path.Combine(Application.persistentDataPath, "some", "file"),它会根据执行代码的操作系统自动插入正确的路径分隔符。
    • File.WriteAllBytes(Application.persistentDataPath + "/some/file");不正确,因为它包含两个参数,一个是路径,另一个是字节[]。
    猜你喜欢
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多