大家好,

我正在尝试在我的游戏中编码一个健康条,它使用Game Maker外部创建的资产。它基本上是一个从绿色(健康满)到红色(没有健康)的圆圈,具有5帧艺术。

我已经尝试按照Sane Games Studios的YouTube教程“GameMaker Tutorials - 心脏健康条”进行操作,并将其应用于我的游戏。然而,我正在遇到一个错误,阻止游戏运行以便我可以看到代码是否工作。

错误信息如下:

ERROR in action number 1

of Draw Event for object ob_Player:

变量ob_Player.hp(100025, -2147483648) 未在读取之前设置。

at gml_Object_ob_Player_Draw_64 (line 4) - var _currenthearts = floor(hp /4);

############################################################################################

gml_Object_ob_Player_Draw_64 (line 4)

从这个错误信息中,我推断出我需要设置健康值。

我的玩家对象的绘制GUI事件代码是:

if (!variable_instance_exists(id, "maxhp") || maxhp <= 0)

maxhp = 1;

var _heartsstotal=maxhp /4;

var _currenthearts = floor(hp /4);

var _partialheart=hp -(_currenthearts * 4);

var _heartsremaining= _heartstotal - _currenthearts;

&#x200B;

var _marginx = 5;

var _marginy= 15;

var _spacing = 20;

&#x200B;

for (var i = 1; i <= _heartstotal; i ++)

{

if (i <=_currenthearts) draw_sprite (HealthCircle, 4, _marginx + (_spacing * i), _marginy);

else if (i == _currenthearts + 1) && (_partialheart != 0) draw_sprite(HealthCircle, _partialheart, _marginx (_spacing * i), _marginy);

else if (_heartsremaining > 0) draw_sprite (HealthCircle, 0, _marginx + (_spacing * i), _marginy);

}

&#x200B;

第一个行添加的就是我试图解决这个问题的方法,其他所有的代码都是从教程中应用到我的图像上的。

玩家对象的创建事件中:

xsp = 0;

ysp = 0;

&#x200B;

_havelaser = false;

&#x200B;

maxHealth = 12;

maxhp= 12;

currentHealth = maxHealth;

currentHealth -=1;

&#x200B;

我非常新手,非常迷茫。如果您能提供如何解决错误代码的建议,我将非常感谢。