如何在Godot出口处保存游戏数据

时间:2019-07-12 09:31:01

标签: godot gdscript

我正在尝试在用户退出应用程序时将字典作为JSON保存在文件中。我该怎么做才能使我的代码在程序运行时结束时运行?

我在Windows上使用Godot 3.1。我尝试使用_exiting_tree信号,并尝试了MainLoop.NOTIFICATION_WM_QUIT_REQUEST通知,但是在两种情况下,代码块都不会运行。 奇怪的是,如果我没有单击窗口内的任何东西(除了边框),它似乎有时会起作用

var data = {}

func _ready():
    get_tree().set_auto_accept_quit(false)

    var data_file = File.new()
    if data_file.open("res://data.json", File.READ) != OK:
        print("Error opening data file")
        return

    var data_text = data_file.get_as_text()
    data_file.close()
    var parsed_data = JSON.parse(data_text)
    if parsed_data.error != OK:
        print("Error parsing JSON data")
        return

    data = parsed_data.result

func _notification(what):
    if what == MainLoop.NOTIFICATION_WM_QUIT_REQUEST:
        print("Saving data")
        var data_file = File.new()
        data_file.open("res://data.json", File.WRITE)
        data_file.store_string(to_json(data))
        data_file.close()
        get_tree().quit()

这是控制台的输出:

** Debug Process Started **
OpenGL ES 3.0 Renderer: GeForce GTX 850M/PCIe/SSE2
** Debug Process Stopped **

我希望看到:

** Debug Process Started **
OpenGL ES 3.0 Renderer: GeForce GTX 850M/PCIe/SSE2
Saving data
** Debug Process Stopped **

0 个答案:

没有答案