资源路径和用户路径
资源路径
访问资源时,使用主机OS文件系统布局可能很麻烦且不可移植。为了解决这个问题,res://
创建了特殊路径 。
res://
将始终指向项目根目录(project.godot所在的位置,因此res://project.godot始终有效)。
仅当从编辑器本地运行项目时,此文件系统才是读写文件。导出或在其他设备(例如电话或控制台,或从DVD运行)上运行时,文件系统将变为只读状态,并且将不再允许写入。
用户路径
诸如保存游戏状态或下载内容包之类的任务仍需要写入磁盘。为此,引擎确保存在一条始终可写的特殊路径user://
。
File
将数据永久存储到用户设备的文件系统中并从中读取数据。例如,这可用于存储游戏保存数据或玩家配置文件。
示例
func save(content):
var file = File.new()
file.open("user://save_game.dat", File.WRITE)
file.store_string(content)
file.close()
func load():
var file = File.new()
file.open("user://save_game.dat", File.READ)
var content = file.get_as_text()
file.close()
return content
ConfigFile
用于处理INI样式文件的Helper类。本质是封装了文件读写方便保存游戏数据的文件类。
常用方法为
set_value(section, key, value) -> void
get_value(section, key) -> Variant
示例
extends Node
const SAVE_PATH = "res://config.cfg"
var _config_file = ConfigFile.new()
var _settings = {
"Audio":{
"mute": false,
},
"debug":{
"vector_color": Color(1, 0, 1),
"area_color": Color(0, 0, 0.2, 0.5)
},
}
func _ready():
# save_settings()
load_settings()
print(_settings)
func save_settings():
for section in _settings.keys():
for key in _settings[section]:
_config_file.set_value(section, key, _settings[section][key])
_config_file.save(SAVE_PATH)
func load_settings():
var err = _config_file.load(SAVE_PATH)
if err != OK:
print("读取配置文件出错! %s" %err)
return
for section in _settings.keys():
for key in _settings[section]:
_settings[section][key] = _config_file.get_value(section, key)
print("配置文件加载成功!")