所以我有这段代码:
修改
// Variables
private Dictionary<string, Color> menuEntries;
private Color fontColour;
// LoadContent()
fontColour = Color.White; // By default
menuEntries = new Dictionary<string, Color>();
menuEntries["SinglePlayer"] = Color.White;
menuEntries["MultiPlayer"] = Color.Gray;
menuEntries["Achievements"] = Color.White;
menuEntries["Options"] = Color.White;
menuEntries["Quit Game"] = Color.White;
// Draw()
/*for (int i = 0; i < menuItems.Count; i++)
{
Vector2 fontOrigin = Game.gameFontLarge.MeasureString(menuItems[i]) / 2;
spriteBatch.DrawString(Game.gameFontLarge, menuItems[i], new Vector2(ScreenManager.Instance.Dimensions.X / 2, (ScreenManager.Instance.Dimensions.Y / 2) + 48 * i), fontColour, 0.0f, fontOrigin, 1.0f, SpriteEffects.None, 0.0f);
}*/
foreach (var entry in menuEntries)
{
var text = entry.Key;
var color = entry.Value;
Vector2 fontOrigin = Game.gameFontLarge.MeasureString(entry.Key) / 2;
spriteBatch.DrawString(Game.gameFontLarge, entry.Key, new Vector2(ScreenManager.Instance.Dimensions.X / 2, (ScreenManager.Instance.Dimensions.Y / 2)), entry.Value, 0.0f, fontOrigin, 1.0f, SpriteEffects.None, 0.0f);
}
那么如何将fontColour
(默认为Color.White
)的值更改为Color.Gray
之类的内容?如果我想把其中一个字符串变成“灰色”并觉得它被禁用了?所以基本上我需要一个解决方案,如何绘制我在代码中指定的不同颜色的每个字符串?我应该使用Dictionary<string, Color>
而不是List<string>
,如果是,请如何迭代它?
答案 0 :(得分:1)
Dictionary<string, Color>
听起来不错。
foreach (var entry in menuItems)
{
var text = entry.Key;
var color = entry.Value;
// ...
}
编辑:对于评论中的问题,您可以在foreach
之外定义变量并在其中使用,例如:
var y = ScreenManager.Instance.Dimensions.Y / 2;
foreach (var entry in menuEntries)
{
var text = entry.Key;
var color = entry.Value;
Vector2 fontOrigin = Game.gameFontLarge.MeasureString(entry.Key) / 2;
spriteBatch.DrawString(Game.gameFontLarge, entry.Key, new Vector2(ScreenManager.Instance.Dimensions.X / 2, y), entry.Value, 0.0f, fontOrigin, 1.0f, SpriteEffects.None, 0.0f);
y += 48;
}