1

我正在学习冒险游戏的基本保存/加载,并遇到了这个错误:

我一开始很简单,只是保存玩家的 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);

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

4

1 回答 1

1

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);
}

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

于 2017-02-23T03:46:07.720 回答