首先在文件系统面板新建脚本global.gd。
image.png

global.gd

其中主要实现了整体方式存取一个用户名信息。

  1. extends Node
  2. var player = {
  3. name = ""
  4. }
  5. var myGame ={
  6. userInfoPath = "res://user.info", # 用户信息文件
  7. }
  8. func _ready():
  9. # 尝试加载用户信息文件中的用户名
  10. player.name = global.loadUserName()
  11. # 保存用户名信息
  12. func saveUserName():
  13. saveFile(myGame.userInfoPath,player.name)
  14. # 加载用户名信息
  15. func loadUserName():
  16. return loadFileString(myGame.userInfoPath)
  17. # ======================= 自定义函数 ============================
  18. # 保存字符串到指定路径的文件
  19. func saveFile(path:String,content:String):
  20. var file = File.new()
  21. if file.file_exists(path):
  22. file.open(path,File.WRITE)
  23. file.store_string(content)
  24. file.close()
  25. # 返回指令路径文件中的内容
  26. func loadFileString(path:String):
  27. var file = File.new()
  28. var string = ""
  29. if file.file_exists(path):
  30. file.open(path,File.READ)
  31. string = file.get_as_text()
  32. file.close()
  33. return string

场景搭建

image.pngimage.png

scn1.gd

  1. extends Control
  2. func _ready():
  3. $Panel/nameTxt.text = global.player.name
  4. func _on_Button_pressed():
  5. global.player.name = $Panel/nameTxt.text
  6. global.saveUserName()
  7. pass # Replace with function body.

可以看到Autoload的脚本,可以直接使用其单例名称进行访问其成员变量和方法。

多场景间共享数据测试

实际测试,确实可以通过Autoload实现全局的数据共享。
image.png
image.png