Сохранение данных при экспорте Godot Android

#android #godot

#Android #godot

Вопрос:

Я программирую игру для Android с помощью Godot 3.2.2. Конечно, я хочу сохранить данные игры, поэтому я создал новую сцену под названием SaveGame.tscn с помощью SaveGame.gd . Я экспортировал проект на свой ПК с Windows, и все работало нормально, все данные были сохранены. После этого я также экспортировал их на свой телефон 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", self, "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
  

Ответ №1:

Я также хотел бы знать ответ. Я пытаюсь найти способ обеспечить «постоянное время» в моей игре для Android, когда «время проходит» в игре даже при закрытии. На данный момент лучшим решением, на мой взгляд, является получение времени Unix при первом запуске игр и сверка с ним при повторном открытии приложения. Моя проблема заключается в том, чтобы найти способ сохранить исходное время unix для вызова проверок.