C# XNA if-else 和默认为第一个值
C# XNA if-else and defaulting to first value
所以我正在为我的游戏开发自定义 ButtonGUI
class。下面是按钮对象的初始化:
// Button code:
ButtonGUI btn1 = new ButtonGUI("Button 1", new Rectangle(150, 300, (int)myFont.MeasureString(menuButtons[0]).X, (int)myFont.MeasureString(menuButtons[0]).Y), myFont, Color.CornflowerBlue);
现在考虑这段代码:
// Draw() method:
btn1.Draw(spriteBatch);
if (btnHover)
{
btn1.btnRect = new Rectangle(140, 300, (int)hoverFont.MeasureString(menuButtons[0]).X, (int)hoverFont.MeasureString(menuButtons[0]).Y);
btn1.btnFont = hoverFont;
btn1.btnColour = Color.Red;
}
else
{
btn1.btnRect = new Rectangle(150, 300, (int)myFont.MeasureString(menuButtons[0]).X, (int)myFont.MeasureString(menuButtons[0]).Y);
btn1.btnFont = myFont;
btn1.btnColour = Color.CornflowerBlue;
}
如果我只有 1 个按钮就没问题...但是如果我有 10 个或更多按钮呢?这确实不是 DRY
所建议的。我觉得我错过了一些东西,一旦不再满足条件而无需手动完成整个操作,就必须有一种方法可以将 return 按钮属性设置为默认值,或者有吗?提前致谢!
创建一个结构来保存所有可能更改的值可能是有意义的。
class ButtonData
{
// put members corresponding to each member of ButtonGUI you wish
// to change
}
class ButtonSwapper
{
ButtonGUI myButton;
ButtonData hoverData;
ButtonData notHoverData;
void change(bool hover)
{
ButtonData dataToUse = hover ? hoverData : notHoverData;
// set each relevant member of myButton to its pair in
// dataToUse
}
}
然后根据需要致电 change
。
所以我正在为我的游戏开发自定义 ButtonGUI
class。下面是按钮对象的初始化:
// Button code:
ButtonGUI btn1 = new ButtonGUI("Button 1", new Rectangle(150, 300, (int)myFont.MeasureString(menuButtons[0]).X, (int)myFont.MeasureString(menuButtons[0]).Y), myFont, Color.CornflowerBlue);
现在考虑这段代码:
// Draw() method:
btn1.Draw(spriteBatch);
if (btnHover)
{
btn1.btnRect = new Rectangle(140, 300, (int)hoverFont.MeasureString(menuButtons[0]).X, (int)hoverFont.MeasureString(menuButtons[0]).Y);
btn1.btnFont = hoverFont;
btn1.btnColour = Color.Red;
}
else
{
btn1.btnRect = new Rectangle(150, 300, (int)myFont.MeasureString(menuButtons[0]).X, (int)myFont.MeasureString(menuButtons[0]).Y);
btn1.btnFont = myFont;
btn1.btnColour = Color.CornflowerBlue;
}
如果我只有 1 个按钮就没问题...但是如果我有 10 个或更多按钮呢?这确实不是 DRY
所建议的。我觉得我错过了一些东西,一旦不再满足条件而无需手动完成整个操作,就必须有一种方法可以将 return 按钮属性设置为默认值,或者有吗?提前致谢!
创建一个结构来保存所有可能更改的值可能是有意义的。
class ButtonData
{
// put members corresponding to each member of ButtonGUI you wish
// to change
}
class ButtonSwapper
{
ButtonGUI myButton;
ButtonData hoverData;
ButtonData notHoverData;
void change(bool hover)
{
ButtonData dataToUse = hover ? hoverData : notHoverData;
// set each relevant member of myButton to its pair in
// dataToUse
}
}
然后根据需要致电 change
。