Unity/UI

상점 동적 스크롤뷰/데이터 연동/Tab 메뉴 구현

s0002 2023. 2. 19. 06:46

스크롤뷰를 세 개 만들어서

시작할 때 각각 스크롤뷰의 셀뷰들을 생성 하고

메뉴 탭하면 해당 스크롤뷰만 활성화되고 다른것은 비활성화되도록 만들었다

 

활성화/비활성화 되는 부분 구현

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class UITabMenu : MonoBehaviour
{
    public UIMenu[] arrUIMenu;
    public GameObject[] arrUIScrollViewGo;
    private UIMenu selectedUIMenu;
    public UIMenu.eMenuType menuType = UIMenu.eMenuType.Chest; //선택된 메뉴 타입 
    public UIScrollView uiScrollView;

    void Start()
    {
        Debug.Log("tabmenu start");
        foreach (UIMenu uiMenu in this.arrUIMenu) {
            uiMenu.btn.onClick.AddListener(() =>
            {
                Debug.Log("tabmenu----->click");
                
                this.SelectMenu(uiMenu.menuType);
            });
        }
    }

    public void Init()
    {
        Debug.Log("tabmenu init");
        this.SelectMenu(UIMenu.eMenuType.Chest);
    }

    public void SelectMenu(UIMenu.eMenuType menuType)
    {
        Debug.LogFormat("prev: {0}, current: {1}", this.menuType, menuType);

        if (this.menuType != menuType)
        {
            var uiMenu = this.arrUIMenu[(int)this.menuType];

            this.selectedUIMenu = uiMenu;

            if (this.selectedUIMenu != null)
            {
                this.selectedUIMenu.FocusOff();
            }

            uiMenu = this.arrUIMenu[(int)menuType];
            uiMenu.FocusOn();

            this.SetScrollViewActiveState(menuType);
            this.menuType = menuType;

        }        
    }

    public void SetScrollViewActiveState(UIMenu.eMenuType menuType)
    {
        this.arrUIScrollViewGo[(int)this.menuType].SetActive(false);
        this.arrUIScrollViewGo[(int)menuType].SetActive(true);

    }
}

아쉬운 점

이런 구조로 만든 상태여서 스크롤뷰의 활성화/비활성화 기능을

Director에서 명령하도록 하면 좋았을 것 같은데 그러면 너무 수정할 부분이 많아져서ㅠ

그냥 UITapMenu에 scrollviewGo로 어싸인해서 탭메뉴에서 상태를 바꾸게 만들었다

'Unity > UI' 카테고리의 다른 글

uGUI 세팅 팝업 만들기  (0) 2023.02.20
좌우로 넘기는 동적 스크롤뷰 만들기  (0) 2023.02.13
좌우로 넘기는 정적 스크롤뷰 만들기  (0) 2023.02.13
슬라이더 만들기  (0) 2023.02.11
체크박스 만들기  (0) 2023.02.07