C# XNA if-else 并默认为第一个值

本文关键字:第一个 默认 XNA if-else | 更新日期: 2023-09-27 18:18:40

所以我正在为我的游戏开发一个自定义ButtonGUI类。下面是按钮对象的初始化:

// 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建议的。我觉得我错过了一些东西,一旦不再满足条件,就必须有一种方法可以将按钮属性恢复为默认值,而无需手动执行整个操作,还是有?提前感谢!

C# XNA if-else 并默认为第一个值

创建一个结构来保存所有可能更改的值可能是有意义的。

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