метод смены состояний - PullRequest
       21

метод смены состояний

1 голос
/ 30 августа 2011

Это просто простой вопрос ... Я часто использую что-то вроде этого (кода), чтобы изменить свой графический интерфейс, поэтому мой вопрос, есть ли что-то более полезное, чем использование переменных bool?

Спасибо!

// Unity3D - C #

public class GuiBehaviour : MonoBehaviour
{
  private bool lookInside = false;

  void OnGUI ()
  {
    if (!lookInside) {
        if (GUILayout.Button ("Look Inside")) {
            lookInside = true;
        }
    } else {
        if (GUILayout.Button ("Exit View")) {
            lookInside = false;
        }
      }
  }
}

Ответы [ 3 ]

2 голосов
/ 30 августа 2011

как насчет:

lookInside =!lookInside;

if(lookInside)
{
  GUILayout.Button ("Look Inside")
}
else
{
   GUILayout.Button ("Exit View")
}
0 голосов
/ 30 августа 2011

Я использую enum для лучшей читаемости и для более чем двух состояний.Например:

public class GuiBehaviour : MonoBehaviour
{
  private GUIState CurrentState;
  enum GUIState
  {
    LookInside,
    ExitView,
    GameOverView
  }

  void OnGUI(GUIState state)
  {
    CurrentState = state;
    switch(state)
    {
       case GUIState.LookInside:
         GUILayout.Button("Look Inside");
         break;
       case GUIState.ExitView:
         GUILayout.Button("Exit View");
         break;
       case GUIState.LookInside:
         GUILayout.Button("Game over");
         break;
     }
  }
}
0 голосов
/ 30 августа 2011

Используйте разные обработчики для разных кнопок, предполагается, что кнопки видны только в любом представлении.

private void InitializeComponent()
{
        lookInsideButton = new System.Windows.Forms.Button();
        lookInsideButton.Click += new EventHandler(lookInsideButton_Click);

        exitViewButton = new System.Windows.Forms.Button();
        exitViewButton.Click += new EventHandler(exitViewButton_Click);
}

void lookInsideButton_Click(object sender, EventArgs e)
{
    ShowInsideView();
}

void exitViewButton_Click(object sender, EventArgs e)
{
    ExitInsideView();
}

System.Windows.Forms.Button lookInsideButton, exitViewButton;
...