Health Bar(生命值条)条件下无法按预期隐藏对应按钮的问题
问题原因
你当前代码存在两个核心逻辑错误:
- 每次比对失败进入else分支时,都会重新初始化局部变量
a=0,后续三个while循环会顺次执行,直接将三个生命值控件一次性全部隐藏,完全无法实现「每次失败仅隐藏1格」的需求。 - 使用while循环做单次条件判断属于完全冗余的写法,没有实际作用。
修复方案
步骤1:定义全局生命值变量
在窗体类的全局作用域定义变量记录当前剩余生命值,不要在点击事件的局部作用域定义:
// 初始生命值为3 int currentHealth = 3;
步骤2:修改比对逻辑
将原有的比对代码替换为如下逻辑,可根据你生命值格子的展示顺序调整对应隐藏的控件对象:
if (Input.SequenceEqual(OrderedList)) { richTextBox1.Text = "true both are equal"; } else { richTextBox1.Text = "false"; currentHealth--; switch(currentHealth) { case 2: Health3.Hide(); break; case 1: Health2.Hide(); break; case 0: Health1.Hide(); // 生命值耗尽时可在这里补充游戏结束的相关逻辑 break; } }
内容的提问来源于stack exchange,提问作者Luke Warren
相关产品推荐
相关产品推荐

