在Godot Android导出上保存数据

问题描述

我正在用Godot 3.2.2编写一个Android游戏。当然我想保存游戏数据,因此我使用SaveGame.gd创建了一个名为SaveGame.tscn的新场景。我将项目导出到Windows PC,一切正常,所有数据都保存了。之后,我也将其导出到了我的Android手机,但是这次没有保存任何数据。相反,它向我显示它找不到保存路径。也许你们中的任何人都可以帮助我解决这个问题,以便将数据也保存在android上。

SaveGame.gd:

extends Control

const FILE_NAME = "user://save_game_data_one.json"

var save_game_data

func _ready() -> void:
    Signals.connect("load_data",self,"load")
    Signals.connect("game_quit","save")
    save_game_data  = {
        "highscore": Globals.highscore,"coins": Globals.coins,"music_volume": Globals.music_volume,"sound_volume": Globals.sound_volume,"button_gameplay": Globals.button_gameplay,"button_gameplay_side": Globals.button_gameplay_side,}
    
func save():
    update_data()
    var file = File.new()
    file.open(FILE_NAME,File.WRITE)
    file.store_string(to_json(save_game_data))
    file.close()
    
func load():
    var file = File.new()
    if file.file_exists(FILE_NAME):
        file.open(FILE_NAME,File.READ)
        var data = parse_json(file.get_as_text())
        file.close()
        if typeof(data) == TYPE_DICTIONARY:
            save_game_data = data
        else:
            printerr("Corrupted data")
    else:
        self.show()     <---- Here it shows me the hidden scene (white rectangle),this means it Could not find FILE_NAME
    export_data()
        
func export_data():
    Globals.highscore = save_game_data["highscore"]
    Globals.coins = save_game_data["coins"]
    Globals.music_volume = save_game_data["music_volume"]
    Globals.sound_volume = save_game_data["sound_volume"]
    Globals.button_gameplay = save_game_data["button_gameplay"]
    Globals.button_gameplay_side = save_game_data["button_gameplay_side"]
    
func update_data():
    if Globals.score_round >= Globals.highscore:
        save_game_data["highscore"] = Globals.score_round
    save_game_data["coins"] += Globals.coins_round

解决方法

我也想知道答案。我试图找到一种在我的android游戏中拥有“持续时间”的方法,即使关闭时,游戏中的“时间也会过去”。到目前为止,我认为最好的解决方案是在第一次启动游戏时获得Unix时间,并在重新打开应用程序时对其进行检查。我的问题是找到一种方法来节省原始的UNIX时间来要求检查。