我们在几个平台上发布了游戏,包括WebGL。这个游戏使用浏览器的IndexedDB API将一些本地内容(应用程序语言,本地用户......)保存到PlayerPrefs中。 虽然我们注意到在我们的服务器上上传了新版本的应用程序后,PlayerPrefs中的数据消失了。 在新上传游戏后,有没有办法保存这些数据?
我已经阅读过WebGL无法写入磁盘,因此无法读取/保存磁盘上的文件。 关于这个问题的一些主题提到了cookie的使用,但找不到任何关于如何使用它的体面文档。
有没有一个像样的解决方案来解决这个问题? 亲切的问候, 卡斯滕
答案 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