Почему мой код выходит из строя при нажатии второй кнопки мыши в C #?

#c# #unity3d

#c# #unity-game-engine

Вопрос:

У меня проблема с моим кодом, и мне отчаянно нужна ваша помощь.

У меня есть текст (в пользовательском интерфейсе) на моем canvas, и я хочу, чтобы он исчез при первом щелчке мыши и появился при втором, но по какой-то причине он больше не появляется.

 void Update() 
{
    Debug.Log ("start                      "   isHide);

    if (Input.GetMouseButtonDown (1) amp;amp; isHide == true) {
        Debug.Log ("after enter 1 and no change   "   isHide);
        text.gameObject.SetActive (false); 
        isHide = false;
        Debug.Log ("after enter 1 and change    "   isHide);
    } else {
        if (Input.GetMouseButtonDown (1) amp;amp; isHide == false) {
            Debug.Log ("after enter 2 and no change    "   isHide);
            text.gameObject.SetActive (true); 
            isHide = true;
            Debug.Log ("after enter 2 and change   "   isHide);
        }
    }
}
  

Спасибо

Ответ №1:

вы не можете щелкнуть по чему-то, что неактивно. Итак, вам нужно создать пустую метку в том же месте или сделать значение .text пустым вместо отключения объекта.

Ответ на комментарий:

Это то, что вы хотите. Я очень быстро воссоздал ваш код с помощью редактирования, предложенного @La pieuvre:

 public UnityEngine.UI.Text text;
string oldTextValue = "";
bool isHide = true;
void Update()
{
    Debug.Log( "Start" );
    if( Input.GetMouseButtonDown( 1 ) )
    {
        Debug.Log( "Pressed Mouse button" );
        if( isHide == true )
        {
            Debug.Log( "Disabling Text" );
            oldTextValue = text.text;
            text.text = "";
            isHide = false;
        }
        else if ( isHide == false ) // Else it wil always just enable the button when u press your mouse.
        {
            Debug.Log( "Enabling Text" );
            text.text = oldTextValue;
            isHide = true;
        }
    }
}
  

Комментарии:

1. как сделать значение .text пустым вместо отключения объекта?

Ответ №2:

Кроме того, в дополнение к тому, что сказал @livo, ваше состояние не очень чистое. Вам лучше написать :

 if (Input.GetMouseButtonDown (1)){ 
    if(isHiden){
      // your code
   }else{
      // your code
   }
}