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