본문 바로가기

Unity3D/C#

UI InputField 기본 기능 할당 in Script (contentType/lineType)

반응형

InputField

 

 

인풋필드는 우리한테 익숙한 홈페이지나 어플, 게임, 등 다양한 곳에 흔히 사용됩니다. 인풋필드는 말 그대로 텍스트를 입력할 수 있는 필드입니다. 지금 이 글을 작성하고 있는 이 공간, 브라우저 위에 주소를 입력하라 수 있는 공간, 글에 댓글을 다는 등, 텍스트를 입력하는 공간은 인풋필드라고 봐도 됩니다. 우리가 흔히 사용하는 메신저 입력하는 곳, 게임 채팅 역시도 인풋필드를 사용한다고 생각하시면 됩니다. 인풋 필드는 다양한 형태로도 사용합니다. 모든 텍스트를 다 담을 수 있거나 숫자만 담을 수 있거나 비밀번호로 표시된다거나 등 InputField의 기능 중 contentType을 이용하면 가능합니다. 인풋필드는 또한 한 줄로 입력하게 할지 여러 줄로 입력하게 할지를 정할 수 있습니다. lineType을 이용하면 가능한데 간단한 정보나 짧은 텍스트를 입력할 경우에는 SingleLine을 사용하고 메일이나 글을 작성해야 돼서 여러 줄이 필요할 경우 MultiLineNewline를 사용하면 됩니다. 인풋필드는 입력하는 UI이기 때문에 입력하고 있는 중이나 입력이 완료됐을 때도 인식이 가능하고 그 상태의 인풋필드 값도 얻을 수 있습니다.

 

 

C# (UNITY 3D)

 

 

InputField

 

MultiLineNewline을 이용해서 InputField에 여러 줄 입력하고 입력하는 예시입니다.

입력 중이나 입력 완료했을 때 Text에 값이 전달됩니다. Get 버튼을 누르면 InputField의 값이 반환됩니다.

 

 

 

using UnityEngine.UI;

 

InputField, Text, Button을 사용하기 위해 UnityEngine.UI가 필요합니다.

 

 

 

할당

 

스크립트의 각 UI 변수에 UI 컴포넌트를 가지고 있는 게임 오브젝트를 할당합니다.

 

 

 

 

    public Text message;
    public Text result; 
    public InputField inputField; 
    public Button button;
     
        

    void Start()
    {
        SetFunction_UI();
    }

    //CodeFinder
    //From https://codefinder.janndk.com/
    private void SetFunction_UI()
    {
        //Reset
        ResetFunction_UI();

        button.onClick.AddListener(Function_Button);
        inputField.onValueChanged.AddListener(Function_InputField); 
        inputField.onEndEdit.AddListener(Function_InputField_EndEdit); 
    }
    
    private void Function_Button()
    {
        string txt = inputField.text;
        result.text = txt; 
        Debug.LogError("InputField Result!\n" + txt);
    }
    private void Function_InputField(string _data)
    {
        string txt = _data;
        message.text = _data;
        Debug.Log("InputField Typing!\n" + _data);
    }
    private void Function_InputField_EndEdit(string _data)
    {
        string txt = _data;
        message.text = _data;
        Debug.LogError("InputField EndEdit!\n" + _data);
    }

    private void ResetFunction_UI()
    {
        button.onClick.RemoveAllListeners();
        inputField.placeholder.GetComponent<Text>().text = "Input..";
        inputField.onValueChanged.RemoveAllListeners();
        inputField.onEndEdit.RemoveAllListeners();
        inputField.contentType = InputField.ContentType.Standard;
        inputField.lineType = InputField.LineType.MultiLineNewline;

    }

 

변수(variable)
message : InputField의 값이 변경되거나 변경 완료됐을 때 InputField의 값을 표시(Text)

result : Get 버튼을 눌렀을 때 현재 인풋 필드의 값을 텍스트로 표시(Text)

inputField : 입력하고 기능을 할당할 인풋 필드(InputField)

button : 기능을 할당할 버튼(Button)

 


함수(function)
SetFunction_UI : 기존에 있던 UI 관련 기능을 모두 삭제하고 인풋필드와 버튼에 기능을 할당
Function_Button : 버튼을 눌렀을 때 함수 발동

Function_InputField : 인풋필드 값을 입력할 때마다 인풋필드의 값을 string 타입으로 반환

Function_InputField_EndEdit : 인풋필드 입력이 끝났을 때 인풋필드의 값을 string 타입으로 반환

ResetFunction_UI : placeholder의 값을 변경한다. 버튼과 인풋필드의 기능들을 전부 삭제한다. 인풋필드 타입은 Standard로, 라인 타입은 MultiLineNewline으로 바꿔준다. 

 

 

UI / InputField / PlaceHolder / Button / onClick / AddListener / onValueChanged / onEndEdit / LineType / MultiLineNewline / ContentType / Standard / RemoveAllListeners

 

 

 

 

 

반응형