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);
}
(我不知道,你是否需要这些额外的检查)
我正在学习冒险游戏的基础 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);
}
(我不知道,你是否需要这些额外的检查)