global.gd
其中主要实现了整体方式存取一个用户名信息。
extends Node
var player = {
name = ""
}
var myGame ={
userInfoPath = "res://user.info", # 用户信息文件
}
func _ready():
# 尝试加载用户信息文件中的用户名
player.name = global.loadUserName()
# 保存用户名信息
func saveUserName():
saveFile(myGame.userInfoPath,player.name)
# 加载用户名信息
func loadUserName():
return loadFileString(myGame.userInfoPath)
# ======================= 自定义函数 ============================
# 保存字符串到指定路径的文件
func saveFile(path:String,content:String):
var file = File.new()
if file.file_exists(path):
file.open(path,File.WRITE)
file.store_string(content)
file.close()
# 返回指令路径文件中的内容
func loadFileString(path:String):
var file = File.new()
var string = ""
if file.file_exists(path):
file.open(path,File.READ)
string = file.get_as_text()
file.close()
return string
场景搭建
scn1.gd
extends Control
func _ready():
$Panel/nameTxt.text = global.player.name
func _on_Button_pressed():
global.player.name = $Panel/nameTxt.text
global.saveUserName()
pass # Replace with function body.
可以看到Autoload的脚本,可以直接使用其单例名称进行访问其成员变量和方法。
多场景间共享数据测试
实际测试,确实可以通过Autoload实现全局的数据共享。