본문 바로가기

Unity3D/C#

UI Button / Toggle에 기능 할당과 삭제 in Script

반응형

AddListener

 

 

UI는 Unity3D 개발자라면 반드시 사용하게 되는 요소입니다. UI 중 특히 버튼이나 토글은 매우 자주 사용됩니다. 버튼과 토글은 Unity3D에서 기본적으로 제공하는 UI Component입니다. 오브젝트로 두 UI를 생성하면 버튼이 클릭하고 땠을 때 버튼을 누른 느낌이나 토글을 여러 번 눌렀을 때 토글의 체크를 표시하는 UI가 꺼졌다가 켜지는 느낌, 등 UI에서 보이는 효과는 기본적으로 제공합니다. 처음 생성했을 때 기본적으로 눈에 보이는 효과 외에 아무런 기능이 없습니다. 그래서 우리는 Inspector 창에서 수동으로 오브젝트를 할당하고 오브젝트 안의 스크립트에서 함수를 찾아서 기능을 할당합니다. 이런 게 다소 번거롭고 관리 차원에서 스크립트 안에서 할당을 하고 싶을 때 스크립트 상에서 함수를 직접 할당하는 방법이 있습니다. 함수는 무한히 확장할 수 있고 매우 유용하고, 우리가 사용할 AddListener 함수는 함수를 다중으로 더하고 RemoveListener 함수로 삭제할 수도 있습니다.

 

 

C# (UNITY 3D)

 

 

 

Button/Toggle

버튼을 클릭했을 때, 토글을 클릭했을 때 앞에 눌렀다는 메시지가 표시됩니다.

 

 

using UnityEngine.UI;

 

버튼과 토글을 사용하기 위해 Script 위에 UnityEngine.UI를 using 해줍니다.

 

 

Allocation

클릭했을 때 이벤트를 넣어 줄 Button/Toggle을 만들고 스크립트에 할당합니다. 버튼이나 토글을 클릭했을 때 메시지를 표시하기 위한 Text도 만들어서 할당합니다.

 

 

 

    public Text message;
    public Button button;
    public Toggle toggle;

    void Start()
    {
        SetFunction_UI();
    }

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

        button.onClick.AddListener(Function_Button);
        toggle.onValueChanged.AddListener(Function_Toggle);
    }
    
    private void Function_Button()
    {
        message.text = "Button Click!";
        Debug.Log("Button Click!");
    }
    private void Function_Toggle(bool _bool)
    {
        message.text = "Toggle Click!\n" + _bool;
        Debug.Log("Toggle Click!\n" + _bool);
    }

    private void ResetFunction_UI()
    {
        button.onClick.RemoveAllListeners();
        toggle.onValueChanged.RemoveAllListeners();
    }
    

 

변수(variable)
message : 버튼이나 토글을 눌렀을 때 메시지 표시(Text)

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

toggle : 기능을 할당할 토글(Toggle)

함수(function)
SetFunction_UI : 기존에 있던 기능은 모두 삭제하고 버튼과 토글에 기능을 할당

(Start나 기능을 할당하고 싶은 위치와 타이밍에서 한 번 실행)
Function_Button : 버튼을 눌렀을때 함수 발동

Function_Toggle : 토글을 눌렀을 때 함수 발동, 현재 토글의 상태를 bool 값으로 반환해서 사용

ResetFunction_UI : 버튼과 토글 기능 전체 삭제

 

 

 

UI / Button / Toggle / AddListener/ RemoveAllListeners / onClick / onValueChanged / Allocation / Unity C#

 

 

 

반응형