我正在编写一个程序来帮助游戏。我需要它来更新显示当前exp值的文本框,在论坛加载它确实显示exp,我需要它来更新exp
,就像每个 3 seconds
。
我该怎么做呢?
这是我到目前为止所做的:
Client C = Client.GetClients()[0];
Player P;
P = C.GetPlayer();
expTextBox.Text = ("Experience: " + P.Experience.ToString());
我不确定我是否需要timer
(我已经尝试过,而且我非常擅长制作)或backGroundWorker
是最好的。
答案 0 :(得分:2)
根据您的评论,我建议您在播放器攻击时更新UI,而不是使用计时器。这将使您的UI保持最新状态,并且可能比3秒或10秒计时器更好地为您服务。你会有这样的方法:
public void Attack(Enemy e)
{
//do your attack code
//did the enemy die?
KillEnemy();
//add exp just for landing a successful attack
AddExp(e);
}
public void AddExp(Enemy e)
{
CurrentPlayer.Exp += e.ExperienceGain;
//update the UI with the new exp
GameWindow.ExperienceBox.Text = CurrentPlayer.Exp;
}
这当然是更多的伪代码,因为我不知道你的设计是什么样的,但我做了很多游戏,这就是我一直这样做的。
祝你好运!
答案 1 :(得分:0)
我鼓励你使用Timer,如果你去无限循环的后台工作人员,那么当你使用后台工作人员时你需要处理两件事:
。使用计时器更新文本框时,您将花费一些时间。当计时器进入窗口中的事件处理循环然后激活事件,最后你将在计时器事件中编写代码。