我有一个我试图设置的商店,调试器内的所有帐户都在触发,但绝对没有做任何事情。
这是我的设置:
o_Shop
- 玩家互动以在room0内创建一个图层
o_Shop_setup
- 创建数组,创建事件:
global.inventory[1, 1] = "Mines"; //Item Name
global.inventory[1, 2] = sp_Blue_mine_UI; //Item Sprite
global.inventory[1, 3] = 50; //Cost
global.inventory[1, 4] = MINE_NUMBER; //Current Inventory
global.inventory[1, 5] = MINE_NUMBER_MAXIMUM; //Maximum amount
//HE Ammo
global.inventory[2, 1] = "HE Ammo"; //Item Name
global.inventory[2, 2] = sp_ammoHE; //Item Sprite
global.inventory[2, 3] = 5; //Cost
global.inventory[2, 4] = AMMO_AMOUNT; //Current Inventory
global.inventory[2, 5] = AMMO_AMOUNT_MAXIMUM; //Maximum amount
然后,我使用访问该数组的follow对象:
o_item_parent - o_shop_Mines / o_shop_AmmoHE的父级 - o_item_parent Draw事件的内部:
draw_set_font(fnt_small);
draw_set_halign(fa_center);
draw_set_valign(fa_middle);
draw_set_color(c_white);
draw_text(x, y - 100, global.inventory[myid, 1]);
draw_sprite(global.inventory[myid, 2], 0, x, y - 30);
draw_set_color(c_yellow);
draw_text(x, y + 32, string(global.inventory[myid, 3]) + " Coins");
draw_set_color(c_white);
draw_text(x, y + 64, string(global.inventory[myid, 4]) + " / " + string(global.inventory[myid, 5]));
o_shop_Mines - 继承Draw事件而不进行任何更改。
myid = 1;
o_shop_AmmoHE - 继承Draw事件而不进行任何更改。 o_shop_AmmoHe创建活动:
myid = 2;
o_buy_parent - o_buy_Mines / o_buy_ammoHE的父级o_buy_parent - 创建事件:
image_speed = 0;
image_index = 0;
o_buy_parent
Step Event:if (COINS >= global.inventory[myid, 3])
{
image_index = 0;
}
else
{
image_index = 1;
}
if (global.inventory[myid, 4] == global.inventory[myid, 5])
{
image_index = 1;
}
o_buy_parent
左压事件:if (global.inventory[myid, 4] == global.inventory[myid, 5])
{
audio_play_sound(snd_gunReload, 1, false);
}
else if (COINS < global.inventory[myid, 3])
{
audio_play_sound(snd_game_over, 1, false);
}
else
{
//audio play sound snd_purchase_complete
COINS -= global.inventory[myid, 3];
global.inventory[myid,4]++;
}
o_buy_Mines
- 从o_buy_parent继承步骤事件/左按下事件
o_buy_Mines
创建活动内:myid = 1;
event_inherited();
o_buy_ammoHE
- 从o_buy_parent继承步骤事件/左按下事件
o_buy_ammoHE
创建活动内:myid = 2;
event_inherited();
o_buy_ammoHE
创建活动内:myid = 2;
event_inherited();
o_buy_ammoHE
左压下事件:if (global.inventory[myid, 4] == global.inventory[myid, 5])
{
audio_play_sound(snd_gunReload, 1, false);
}
else if (COINS < global.inventory[myid, 3])
{
audio_play_sound(snd_game_over, 1, false);
}
else
{
//audio play sound snd_purchase_complete
COINS -= global.inventory[myid, 3];
global.inventory[myid,4]++; //breakpoint triggers fine, does nothing.
//Have also tried the below line, doesn't work, but commented out currently:
//AMMO_AMOUNT += 5;
}
ALL CAPS中的所有变量都是使用o_init
o_initis inside of room ->
rm_LoadingScreen中的globalvar方法创建的全局变量。
rm_LoadingScreen
什么也不做,只是持有这个不持久的对象,这个对象包含一个可以改变STATE = GameState
(enum)的switch语句
`STATE = GameState.menu` is called by default which calls
scr_menuLoader();
break;
除商店外,一切正常。它昨天确实有效,但我无法追踪我的破坏情况。目前,代码正在递增绘制到屏幕的数字
draw_text(x, y + 64, string(global.inventory[myid, 4]) + " / " + string (global.inventory[myid, 5]));
但globalvar AMMO_AMOUNT没有变化。调试器将其显示为永不改变。
任何人都可以提供一些反馈或第二组眼睛吗?我一直盯着这几个小时,我只是看不出问题。
您对AMMO_AMOUNT和带帽的其他名称的使用等效于常量,用作初始值。无论如何,似乎global.inventory [myid,4]中的值已经增加了。因此,如果您想要更改AMMO_AMOUNT的值,您应该明确地执行它,就像您在注释行中一样:// AMMO_AMOUNT + = 5;我希望你没有错误地评论它XD
最后,你的代码应该是这样的:o_buy_ammoHE Left Pressed Event内部,最后一个else块:
else
{
//audio play sound snd_purchase_complete
COINS -= global.inventory[myid, 3];
global.inventory[myid,4]++;
AMMO_AMOUNT = global.inventory[myid,4];
}
如果它没有帮助,我会认为一切都按预期工作,你只需要使用global.inventory [myid,4])。