[UGUI]_5. Toggle

유니티 UI

목록 보기
5/9

Toggle

Toggle은 클릭했을때 온오프 상태를 표시하고
Toggle에 상태가 변할때 메소드를 출력할 수 있는 상호작용이 가능한 UI입니다.

게임 오브젝트

인스펙터

OnValueChanged()를 이용한 이미지 활성/비활성화

이미지를 활성화 시키는 메소드를 작성한 스크립트를 준비합니다.
매개변수(bool boolean)을 사용하여 SetActive를 활성화/비활성화 하고 있습니다.

작성한 스크립트를 연결시키고, UI - Image를 준비하여 적당한 이미지를 넣어줍니다.
On Value Changed() 이벤트에 콜백함수를 등록합니다.

Dynamic, Static 이벤트 메소드

On Value Changed()에 콜백함수를 선택할때 Dynamic, Static 중에 하나를 고를수 있습니다.
제가 준비한 메소드는 한개지만 Dynamic과 Static 부분에 각각 나누어져있는걸 볼 수 있습니다.

겉으로 보이는 차이점은
Dynamic의 경우 매개변수가 안보이며, Static의 경우 매개변수가 보입니다.

만든 메소드가 Dynamic에 해당하려면
상호작용 UI Type의 매개변수 1개만을 가지는 메소드(또는 프로퍼티)로 만들어야 합니다.

Button을 제외한
Toggle, Slider, Scrollbar, Dropdown, InputField와 같은 상호작용 UI의
이벤트 메소드 등록에서 Dynamic (Type)을 선택하면 해당 상호작용 UI에서
변화되는 값이 매개변수로 자동 전달됩니다.

예를 들어 현재 Toggle에서는 Dynamic bool 탭의 이미지_활성화 메소드를 선택해야
Toggle의 "Is On" 값과 동기화됩니다.
(Static Parameters를 사용하면 "Is On" 값과 동기화되지 않습니다.)

스크립트를 이용해 OnValueChanged() 이벤트 등록

Toggle 이벤트 리스너인 onValueChanged.AddListener를 이용해 콜백함수를 등록합니다.
onValueChanged.AddListener()에 등록하는 메소드는 bool 매개변수 1개를 가지고 있어야 합니다.

using UnityEngine.UI;

public class Toggle버튼 : MonoBehaviour
{
    [SerializeField]
    private GameObject Image;

    [SerializeField]
    private Toggle toggle;

    private void Awake()
    {
        toggle.onValueChanged.AddListener(이미지_활성화);
    }

    public void 이미지_활성화(bool boolean)
    {
        Image.SetActive(boolean);
        Debug.Log($"토글 키 {boolean}");
    }
}

결과

Toggle Group

여러 개의 Toggle UI를 하나의 그룹으로 설정하면 그룹 내의 토글 중
1개만 체크가 되도록 설정 할 수 있습니다.

사용하는 방법은 Toggle 컴포넌트의 있는 그룹 변수에
Toggle Group 컴포넌트를 가지고 있는 오브젝트를 등록하는 것입니다.

새 게임 오브젝트 이름을 ToggleGroup이라고 설정하고 {Toggle Group 컴포넌트}를 추가합니다.
자식 오브젝트로 그룹으로 만들 Toggle을 집어넣습니다.(편하게 보기위해서)
Toggle 인스턴스에서 Group 변수에 우리가 만든 ToggleGroup을 넣어줍니다.
그룹으로 만들 다른 Toggle들도 같은 작업을 해줍니다.

결과

0개의 댓글