Bool not updating
本文关键字:updating not Bool | 更新日期: 2023-09-27 18:02:43
我有一个名为attack
的bool,每当按下Q
按钮(Q
是攻击)时,我将其设置为true
我已经使用断点来尝试自己解决这个问题。将attack
设置为true的代码行正在运行,但实际上并没有将attack
设置为true…我是XNA的新手,很抱歉,如果这是一个明显的解决方案。这里是代码…:(注:我已经遗漏了许多与问题无关的代码)
public class Player
{
Animation playerAnimation = new Animation();
public void Update(GameTime gameTime)
{
keyState = Keyboard.GetState()
if (keyState.IsKeyDown(Keys.Q))
{
tempCurrentFrame.Y = 0;
*** playerAnimation.Attack = true; *** This line of code runs yet doesn't actually work
}
public class Animation
{
bool attack;
public bool Attack
{
get { return attack; }
set { value = attack; }
}
public void Update(GameTime gameTime)
{
if (active)
frameCounter += (int)gameTime.ElapsedGameTime.TotalMilliseconds;
else
frameCounter = 0;
if (attack) ***This never turns true***
switchFrame = 50;
就像我之前说的,我已经使用断点来检查,所有的代码都运行,只是我的攻击变量没有发生任何事情,我不知道为什么不。
我有一个类似的bool称为active与所有相同的属性和代码链接,但bool确实得到更新,这就是为什么我如此卡住。
感谢您的宝贵时间。
set
访问器中的逻辑是反向的。您需要将字段attack
赋值给setter的值,而不是反过来
set { attack = value; }
问题是
set { value = attack; }
您将value
设置为字段,而不是将字段设置为值。改为
set { attack = value; }
您的set
方法是反向的。
set { attack = value };
正如其他人所说,您的set
是向后的。应该是
set {attack = value;}
但是,我还想建议使用Auto Properties。这样就很容易解决这个问题了。知道正确的赋值顺序仍然很重要,尽管
public bool Attack {get;set;}
由于属性Getter和Setter是微不足道的,我建议将其实现为Auto property,如
public bool Attack{ get; set; }
这样做,它将减少您的代码大小,但产生预期的结果。而且,这个bug一开始就不会被引入。