2017-01-22 1 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 문의 두 번째 매개 변수가 작동하는지 확인했습니다

. 입력 된 텍스트가 "사용자 이름 입력"인 경우 메뉴가 닫히지 않으므로 텍스트 변수를 올바르게 검사합니다. 난 그냥 왜 다른 진술을 입력 진실을 반환하는 경우 이해가 안 돼? 나는 뭔가를 놓치고 있어야합니다.

답변

1

GUI.focusControl("")GUI.focusControl(null)은 Unity의 새로운 UI 시스템 (uGUI)과 아무 관련이 없습니다. 그들은 IMGUI에서 작동하도록 만들어졌습니다.

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

하지InputField.text를 폴링하려고합니까 초점

input.DeactivateInputField(); 

를 중지하려면 : 당신이 InputField에 초점을하려면

은 아래의 코드를 사용할 수 있습니다. 그것은 그것을 사용하는 방법이 아닙니다. 이 경우 두 가지 옵션이 있습니다.

. InputFieldonEndEdit 이벤트에 가입하십시오.

입력을 마친 플레이어가 Enter/Return 또는 away을 클릭하면이 기능이 호출됩니다. 그런 다음 사용자 이름을 확인/비교할 수 있습니다. # 3에서 this 게시물을 확인하십시오.

. "확인"또는 "제출"이라고 표시된 버튼을 추가하십시오. 사용자가 입력을 완료하면 해당 버튼을 클릭해야합니다. Button onClick 이벤트에 가입하십시오. Button을 클릭하면 사용자 이름을 확인/비교합니다. # 2에서 this 게시물을 확인하십시오.

또 다른 까다로운 방법을 찾으면 Android 기기에서 작동하지만 Android 기기에서는 작동하지 않습니다. 결국 코드를 ​​다시 작성하게됩니다.

관련 문제