1. 지난 포스팅 당시의 오류
2. 오류가 났던 위치
3. 오류가 난 이유

6개의 UIGoldCell Prefab 중, 하나의 Btn Price에 연결이 되어있지 않았다.

 

4. 해당 인스턴스를 연결
5. 씬 실행시 오류 로그가 사라짐을 확인

 

+++

 

6. Tap_Menu의 버튼들

해당 Tap_Menu의 버튼 타입들을 Enum으로 정의해주고,

해당 메뉴(텍스트)를 클릭시 현재 타입(Type)에 따라서 ScrollView를  변경해보고자 한다.

 

using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class TabMenuController : MonoBehaviour
{
    public GameObject chestScrollView;
    public GameObject goldScrollView;

    private Color selectedColor = new Color(246f / 255f, 225f / 255f, 156f / 255f);
    private Color defaultColor = Color.white;
    public enum TabType
    {
        ChestPacks = 0,
        GoldPacks = 1
    }

    private void Start()
    {
        // 모든 Tap_Text의 LineFocus를 비활성화
        foreach (Transform child in transform)
        {
            var lineFocus = child.Find("LineFocus");
            if (lineFocus != null)
            {
                lineFocus.gameObject.SetActive(false);
            }
        }


        int index = 0;
        foreach (Transform child in transform)
        {
            var text = child.GetComponent<TMP_Text>();
            if (text != null)
            {
                text.color = defaultColor;

                TabType tabType = (TabType)index;
                Button button = child.gameObject.AddComponent<Button>(); // 버튼 컴포넌트 추가
                button.onClick.AddListener(() => OnTabSelected(tabType));
            }
            index++;
        }

        // 초기 상태 설정 (ChestPacks가 선택된 상태)
        OnTabSelected(TabType.GoldPacks);
    }

    public void OnTabSelected(TabType selectedTab)
    {
        foreach (Transform child in transform)
        {
            var text = child.GetComponent<TMP_Text>();
            var lineFocus = child.Find("LineFocus");
            TabType tabType = (TabType)child.GetSiblingIndex();

            if (tabType == selectedTab)
            {
                text.color = selectedColor;
                lineFocus.gameObject.SetActive(true);
            }
            else
            {
                text.color = defaultColor;
                lineFocus.gameObject.SetActive(false);
            }
        }

        // ScrollView 활성화/비활성화 처리
        switch (selectedTab)
        {
            case TabType.ChestPacks:
                chestScrollView.SetActive(true);
                goldScrollView.SetActive(false);
                break;
            case TabType.GoldPacks:
                chestScrollView.SetActive(false);
                goldScrollView.SetActive(true);
                break;
        }
    }
}

7. TabMenuController 스크립트 작성

 

8. 만든 스크립트를 TabMenu에 부착하고, 활성/비활성화 할 ScrollView들을 연결
9. 결과 화면
10. 현재 프리팹 목록
11. 현재 스크립트 목록

 

다음 포스팅 예정 목록:

1. Gem Packs의 스크롤 뷰 구현

2. 현재 소지한 Gem, Gold의 수치를 데이터 연동을 통한 불러오기/저장

3. Chest/Gold/Gem Cell들의 Price 버튼을 통해 현재 소지한 Gem,Gold의 수치를 + 또는 - 로 변경 및 저장(User Data)

 

 

반응형

+ Recent posts