GML,如何将我所在的房间保存到 .ini 中?

GML, How do I save what room i'm in to .ini?

我正在学习冒险游戏的基础 saving/loading 并遇到了这个错误:

我一开始很简单,只是保存了玩家的 X 和 Y 位置以及他们当前所在的房间。

ini_open("save.ini");

ini_write_string("Player", "Room", room);
ini_write_real("Player", "X", oPlayer.x);
ini_write_real("Player", "Y", oPlayer.y);

ini_close();

但是,我一尝试保存就抛出错误。

FATAL ERROR in
action number 1
of  Step Event0
for object pauseMenu:

ini_write_string argument 3 incorrect type (0) expecting a String (YYGS)
 at gml_Script_ini_save (line 5) - ini_write_string("Player", "Room", room);

我在保存房间时做错了什么,还是我必须以不同的方式去做?

room是数字,不是字符串

ini_open("save.ini");

ini_write_string("Player", "Room", room_get_name(room));
ini_write_real("Player", "X", oPlayer.x);
ini_write_real("Player", "Y", oPlayer.y);

ini_close();

对于反向变换,您应该使用 asset_get_index。像这样:

ini_open("save.ini");
var r_name = ini_read_string("Player", "Room", "");
global.startx = ini_read_real("Player", "X", 0);
global.starty = ini_read_real("Player", "Y", 0);

ini_close();

if r_name == "" or (global.startx == 0 and global.starty == 0)
{
    room_goto(r_level1); // first room
}
else
{
    var r = asset_get_index(r_name);
    if r != -1 and asset_get_type(r_name) == asset_room
        room_goto(r);
}

(我不知道,你是否需要这些额外的检查)