[유니티 Unity] Toggle 이용해서 선택 창 만들기

유니티 3d.png

두개의 toggle 오브젝트를 만들어준다. 

etc-image-1

 

입금을 눌렀을 때, 기본 토글 버튼의 경우는 

입금과 출금 모두 선택 되게 되어있다. 

etc-image-2

현재 내가 구현하려고 하는 기능은

입금을 눌렀을 경우, 입금 창이 뜨고

출금 창을 눌렸을 경우에는 출금만 가능한 기능을 구현하기 위해서 

 

 

빈 게임 오브젝트 안에

Toggle Group 컴포넌트를 넣어주고

 

스크립트 안에 다음과 같이 작성해 주었다.

 

  public Toggle setupToggleCurrentSeletion
    {
        get { return setupToggleGroup.ActiveToggles().FirstOrDefault(); }
    }

 

'setupToggleGroup.ActiveToggles().FirstOrDefault(); 는 

유니티 토글 그룹에서 선택된 토글을 가져오게 해준다.

 

이렇게 하고 실행을 해봤는데 여전히 안되길래 뭐지 했는데

 

etc-image-3

Toggle컴포넌트 안에 토글 그룹을 지정 해주지 않아서 그런것이었다. 

Toggle 그룹을 지정해주고 나면 원하는 기능이 구현된것을 확인하였다.

 

 

또 다른 예시 프로젝트 소스코드

 

    public ToggleGroup RecordList_toggleGrup;
    public Toggle[] RecordList_toggle;
    public GameObject[] RecordCanvasList_ob;

   
    public Toggle setupToggleCurrentSeletion
    {
        get { return RecordList_toggleGrup.ActiveToggles().FirstOrDefault(); }
    }

    public void SetUpToggleChoice()
    {
        if (RecordList_toggleGrup.ActiveToggles().Any())
        {
            if (setupToggleCurrentSeletion.name.Equals("PassbookBtn_Grup1"))
            {
                PanelSelection_Active(true, false, false, false);
            }
            else if (setupToggleCurrentSeletion.name.Equals("PassbookBtn_Grup2"))
            {
                PanelSelection_Active(false, true, false, false);
            }
           else if (setupToggleCurrentSeletion.name.Equals("PassbookBtn_Grup3"))
            {
                PanelSelection_Active(true, false, true, false);
            }
            else if (setupToggleCurrentSeletion.name.Equals("PassbookBtn_Grup4"))
            {
                PanelSelection_Active(false, false, false, true);
            }
        }
    }
    void PanelSelection_Active(bool grup1, bool grup2, bool grup3, bool grup4)
    {
        if (grup1 == true) { RecordCanvasList_ob[0].gameObject.SetActive(true); }
        else { RecordCanvasList_ob[0].gameObject.SetActive(false); }
        if (grup2 == true) { RecordCanvasList_ob[1].gameObject.SetActive(true); }
        else { RecordCanvasList_ob[1].gameObject.SetActive(false); }
        if (grup3 == true) { RecordCanvasList_ob[2].gameObject.SetActive(true); }
        else { RecordCanvasList_ob[2].gameObject.SetActive(false); }
        if (grup4 == true) { RecordCanvasList_ob[3].gameObject.SetActive(true); }
        else { RecordCanvasList_ob[3].gameObject.SetActive(false); }
    }