UI는 Unity3D 개발자라면 반드시 사용하게 되는 요소입니다. UI 중 특히 버튼이나 토글은 매우 자주 사용됩니다. 버튼과 토글은 Unity3D에서 기본적으로 제공하는 UI Component입니다. 오브젝트로 두 UI를 생성하면 버튼이 클릭하고 땠을 때 버튼을 누른 느낌이나 토글을 여러 번 눌렀을 때 토글의 체크를 표시하는 UI가 꺼졌다가 켜지는 느낌, 등 UI에서 보이는 효과는 기본적으로 제공합니다. 처음 생성했을 때 기본적으로 눈에 보이는 효과 외에 아무런 기능이 없습니다. 그래서 우리는 Inspector 창에서 수동으로 오브젝트를 할당하고 오브젝트 안의 스크립트에서 함수를 찾아서 기능을 할당합니다. 이런 게 다소 번거롭고 관리 차원에서 스크립트 안에서 할당을 하고 싶을 때 스크립트 상에서 함수를 직접 할당하는 방법이 있습니다. 함수는 무한히 확장할 수 있고 매우 유용하고, 우리가 사용할 AddListener 함수는 함수를 다중으로 더하고 RemoveListener 함수로 삭제할 수도 있습니다.
C# (UNITY 3D)
버튼을 클릭했을 때, 토글을 클릭했을 때 앞에 눌렀다는 메시지가 표시됩니다.
using UnityEngine.UI;
버튼과 토글을 사용하기 위해 Script 위에 UnityEngine.UI를 using 해줍니다.
클릭했을 때 이벤트를 넣어 줄 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#
'Unity3D > C#' 카테고리의 다른 글
UI Dropdown 기능 할당/삭제 (이미지,텍스트 옵션 추가) in Script (0) | 2020.10.21 |
---|---|
UI Slider 기능 할당/삭제 (최솟값/최댓값/숫자로 변환) in Script (0) | 2020.10.20 |
시스템 시간을 이용한 프레임 영향이 없는 타이머(Timer) 스크립트 (1) | 2020.10.14 |
유니티 시간(Time.time)을 이용한 타이머 (Timer) 스크립트 (0) | 2020.10.12 |
Time.deltaTime을 이용한 타이머 (Timer) 스크립트 (0) | 2020.10.11 |