C# 如何在windows窗体中保存对象的状态
无法在我的windows窗体应用程序中永久更改字段值 如果这是其他地方的答案,请原谅我。我确实看了,没有发现任何具体的东西。我正在尝试在windows窗体应用程序中设计一个小游戏。然而,我遇到的一个问题是,当我在按钮事件中更改字段的值时,它不会永久应用更改。因此,当我再次单击按钮时,它不会将monster hp减少到8,它只是重复代码,就好像它是第一次执行它一样。我尝试过使用静态变量和ref变量,但也许我用错了C# 如何在windows窗体中保存对象的状态,c#,winforms,C#,Winforms,无法在我的windows窗体应用程序中永久更改字段值 如果这是其他地方的答案,请原谅我。我确实看了,没有发现任何具体的东西。我正在尝试在windows窗体应用程序中设计一个小游戏。然而,我遇到的一个问题是,当我在按钮事件中更改字段的值时,它不会永久应用更改。因此,当我再次单击按钮时,它不会将monster hp减少到8,它只是重复代码,就好像它是第一次执行它一样。我尝试过使用静态变量和ref变量,但也许我用错了 public partial class Form1 : Form {
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void PlayerHealth_Click(object sender, EventArgs e)
{
}
public void MonsterHealth_Click(object sender, EventArgs e)
{
}
private void AttackBtn_Click(object sender, EventArgs e)
{
Player player = new Player();
Monster monster = new Monster();
player.AttackMonster(player, monster);
MonsterHealth.Text = monster.HP.ToString();
}
}
public class Player
{
public int HP { get; set; }
public int Attack = 1;
public void AttackMonster(Player player, Monster monster)
{
monster.HP -= player.Attack;
}
}
public class Monster
{
public int HP = 10;
public int Attack { get; set; }
}
}
我的目标是让HP字段在每次单击按钮时减少一个。目前情况并非如此。HP变量没有递减,因为您在每次
攻击中都会创建Monster类的新实例。
为了避免它,请创建Monster实例的类级属性,并在类级实例化它,然后在AttackBtn\u Click()函数中使用它
public partial class Form1 : Form
{
public Monster MonsterInstance { get; private set; } = new Monster();
public Player PlayerInstance { get; private set; } = new Player();
public Form1()
{
InitializeComponent();
}
//Your business logic
private void AttackBtn_Click(object sender, EventArgs e)
{
PlayerInstance.AttackMonster(PlayerInstance, MonsterInstance);
MonsterHealth.Text = MonsterInstance.HP.ToString();
}
}
new
意味着新你想要多少怪物?有了这个设计,set
可能就没有必要了。谢谢!我试试看@Anthonyabd你的游戏中只有一个怪物吗?没有,我还有更多。@Phil1970,我用私人设置更新了我的答案