스크롤뷰를 세 개 만들어서
시작할 때 각각 스크롤뷰의 셀뷰들을 생성 하고
메뉴 탭하면 해당 스크롤뷰만 활성화되고 다른것은 비활성화되도록 만들었다
활성화/비활성화 되는 부분 구현
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 |