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