#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
}
}