Godot4.0文件读取(C#)

发布时间 2023-04-23 17:04:29作者: 期miu

搞半天才弄明白Godot文件操作。

Godot的文档总是试图让我使用自定义Resource来支持文件操作,但是我只需要读取纯文本。

读取纯文本

读取纯文本的方式如下:

//Godot.FileAccess这个类和C#自带的类名称一致,有时需要指定别名。
using FileAcc = Godot.FileAccess;

string ReadAll(string path)
{
	//path是Godot管理下的文件路径,如 "res://myfolder/myfile.txt"
	using var fl = FileAcc.Open(path, FileAcc.ModeFlags.Read);
	if (fl == null)
	{
	    var err = FileAcc.GetOpenError();
	    GD.Print(err);
	}
	return fl.GetAsText();
}

关于文件路径的约定,参考
https://docs.godotengine.org/en/stable/tutorials/io/data_paths.html

逐行读取

如果需要逐行读取,根据Godot自带的注释得知,应该这样写

while (fl.GetPosition() < fl.GetLength())
{
    tststr = fl.GetLine();
}

注意事项

  • 写入纯文本的方式类似,但是需要注意项目输出后就不能写入res://目录下的内容了。
    user://目录下的内容总是可读可写的。

  • 输出项目时,可能一些文件会被忽略而不会存在于最终的程序中。
    需要在导出项目时注意配置:

image

参考

https://docs.godotengine.org/en/stable/tutorials/io/saving_games.html#