应用更新后,Unity WebGL仍保留localData

时间:2018-04-26 10:27:59

标签: unity3d unity-webgl

我们在几个平台上发布了游戏,包括WebGL。这个游戏使用浏览器的IndexedDB API将一些本地内容(应用程序语言,本地用户......)保存到PlayerPrefs中。 虽然我们注意到在我们的服务器上上传了新版本的应用程序后,PlayerPrefs中的数据消失了。 在新上传游戏后,有没有办法保存这些数据?

我已经阅读过WebGL无法写入磁盘,因此无法读取/保存磁盘上的文件。 关于这个问题的一些主题提到了cookie的使用,但找不到任何关于如何使用它的体面文档。

有没有一个像样的解决方案来解决这个问题? 亲切的问候, 卡斯滕

1 个答案:

答案 0 :(得分:1)

是Unity将所有数据(包括PlayerPrefs)保存到IndexedDB。 您可以在“应用程序”下的Chrome DevTools中看到这些文件: <ButtonList@ButtonList>: orientation: "horizontal" Button: text: "change fisrt to me" on_press: app.change_first(self.text) Button: text: "change two to me" <LabelBox@BoxLayout>: Label: id: first text: "first" Label: id: two text: "two" <Test>: size_hint: .5, .5 pos_hint: {'center_x': .5, 'center_y': .5} do_default_tab: False TabbedPanelItem: text: 'first tab' LabelBox: id: lbs

我们使用不同的Unity版本或不同的机器创建一个新的构建,哈希值会发生变化。因此,Storage-> IndexedDB -> /idbfs {{YOUR SERVER}} -> FILE_DATA

无法找到旧版本中保存的文件

如果您只保存字符串或数字,则解决方法可以使用浏览器中的Applicaton.persistentDataPath。 您可以编写一些javascript函数(例如在模板文件中的LocalStorage标记中)来存储您的文本数据 - 它与PlayerPrefs非常相似:

<script>

保存值。和

var saveData = function(yourkey, yourdata){
    localStorage.setItem(yourkey, yourdata);
}

得到他们。

在Unity Editor中创建一个plugin.jslib文件并调用这些函数:

var loadData = function(yourkey){
    localStorage.getItem(yourkey);
}

});

现在您可以通过脚本调用它们here