0

当用户退出应用程序时,我正在尝试将字典作为 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 **
4

0 回答 0