资源路径和用户路径

资源路径

访问资源时,使用主机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("配置文件加载成功!")
最后修改:2020 年 05 月 16 日
如果觉得我的文章对你有用,请随意赞赏