2017-01-22 71 views
0

我爲我製作的簡單遊戲創建了暫停菜單。在該暫停菜單中有一個字段可輸入您的用戶名。我試圖在用戶被允許關閉暫停菜單之前檢查是否輸入了用戶名。但是,當焦點從輸入字段改變時,只有input.textinput.TextComponent.text值才更改爲鍵入的用戶名。從輸入字段獲取文本僅在焦點更改後才起作用

我的代碼如下:

public InputField input; 
if ((string.IsNullOrEmpty (input.text)) || (input.text == "Enter Username")){ 
    input.textComponent.color = Color.red; 
    input.text = "Enter Username"; 
} else { 
    input.textComponent.color = Color.black; 

    //hide pause menu and resume game 
    canvas.gameObject.SetActive (false); 
    Time.timeScale = 1; 
} 

此代碼僅當用戶單擊輸入字段盒子拿走試圖關閉暫停菜單之前的作品。如何輸入輸入的文本?

我已經嘗試在if語句之前添加GUI.focusControl("")GUI.focusControl(null),但這也不起作用。

編輯:

我已經證實,if語句的第二個參數是工作。如果輸入的文本是「輸入用戶名」,菜單不會關閉,所以我知道我正確地檢查文本變量。我只是不明白爲什麼if語句返回true,如果你輸入其他任何東西?我必須缺少一些東西

回答

1

GUI.focusControl("")GUI.focusControl(null)都與Unity的新UI系統(uGUI)無關。他們與IMGUI一起工作。

如果你想專注於InputField您可以使用下面的代碼:

public InputField input; 
input.ActivateInputField(); 
input.Select(); 

,停止聚焦

input.DeactivateInputField(); 

嘗試輪詢InputField.text。這不是如何使用它。在這種情況下,您確實有兩種選擇:

。訂閱InputFieldonEndEdit事件。

當玩家完成打字並點擊Enter/Return或者離開時,該功能將被調用。然後你可以檢查/比較那裏的用戶名。 檢查#3this後。

。添加一個表示「檢查」或「提交」的按鈕。當用戶完成輸入時,他們將不得不點擊該按鈕。訂閱按鈕onClick事件。點擊Button後,您會檢查/比較用戶名。檢查#2this後。

如果你發現另一個棘手的方法來做到這一點,它會工作,但不會在Android設備上。你將最終重新編寫代碼。

相關問題