본문 바로가기
PROGRAMING📚/Unity📑

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

별찌루 2021. 12. 9.
728x90
반응형

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

 

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

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

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

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

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

 

 

빈 게임 오브젝트 안에

Toggle Group 컴포넌트를 넣어주고

 

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

 

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

 

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

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

 

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

 

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); }
    }

 

 

728x90
반응형

댓글