我可以在不不断写入的情况下实时更新 C# 控制台输出吗?
Can I update C# console output in realtime without constantly writing to it?
我正在创建一个简单的格斗游戏机应用程序,我的 Player
对象上有一个 health
属性,它在 Fight
方法中更新。
我想知道是否可以在控制台中实时显示 health 变量,而无需调用多次更新控制台的方法。
这是我开始战斗的主要方法,并显示每个玩家的健康输出。
public static void StartFight(Player p1, Player p2) {
Console.Clear();
Title(" BATTLE ");
Console.WriteLine($"{p1.name} Health: {p1.health} ");
Console.WriteLine($"{p2.name} Health: {p2.health} ");
// Loop giving each player a chance to attack
// and block each turn until 1 dies
while (true) {
if (Fight(p1, p2)) {
Title(" GAME OVER! ");
PlayAgain();
break;
}
if (Fight(p2, p1)) {
Title(" GAME OVER! ");
PlayAgain();
break;
}
}
}
是否可以实时写入控制台,这样我就不必一直做Console.WriteLine($"{p1.name} Health: {p1.health} ");
?
否 - 如果您正在向控制台显示,则无法实时更新 UI 除非多次调用方法来更新控制台。
其他 UI 有办法使用事件、绑定等来做到这一点。
我正在创建一个简单的格斗游戏机应用程序,我的 Player
对象上有一个 health
属性,它在 Fight
方法中更新。
我想知道是否可以在控制台中实时显示 health 变量,而无需调用多次更新控制台的方法。
这是我开始战斗的主要方法,并显示每个玩家的健康输出。
public static void StartFight(Player p1, Player p2) {
Console.Clear();
Title(" BATTLE ");
Console.WriteLine($"{p1.name} Health: {p1.health} ");
Console.WriteLine($"{p2.name} Health: {p2.health} ");
// Loop giving each player a chance to attack
// and block each turn until 1 dies
while (true) {
if (Fight(p1, p2)) {
Title(" GAME OVER! ");
PlayAgain();
break;
}
if (Fight(p2, p1)) {
Title(" GAME OVER! ");
PlayAgain();
break;
}
}
}
是否可以实时写入控制台,这样我就不必一直做Console.WriteLine($"{p1.name} Health: {p1.health} ");
?
否 - 如果您正在向控制台显示,则无法实时更新 UI 除非多次调用方法来更新控制台。
其他 UI 有办法使用事件、绑定等来做到这一点。