Chapter 11-4. 포션 제조 : 페이지 시스템

Date:     Updated:

카테고리:

태그:

인프런에 있는 케이디님의 [유니티 3D] 실전! 생존게임 만들기 - Advanced 강의를 듣고 정리한 필기입니다. 😀
🌜 강의 들으러 가기 Click

포션 제조 : 페이지 시스템

🚀 페이지 버튼 UI

image

위 아래 페이지 이동 이미지에 버튼 컴포넌트 추가

📜ArchemyTable

    private int page = 1; // 현재 페이지
    [SerializeField] private int theNumberOfSlot; // 한 페이지당 슬롯의 최대 개수(4개)

    [SerializeField] private Image[] image_ArchemyItems; // 페이지에 따른 포션 이미지들(4개 사용)
    [SerializeField] private Text[] text_ArchemyItems; // 페이지에 따른 포션 텍스트들(4개 사용)
    [SerializeField] private Button[] btn_ArchemyItems; // 페이지에 따른 포션 버튼들(4개 사용)
    
    void Start()
    {
        ClearSlot();
        PageSetting();
    }

    public void Buttonclick(int _buttonNum)
    {
        if (archemyItemQueue.Count < 3)
        {
            int archemyItemArrayNumber = _buttonNum + (page - 1) * theNumberOfSlot;

            archemyItemQueue.Enqueue(archemyItems[archemyItemArrayNumber]);
            
            image_CraftingItems[archemyItemQueue.Count].gameObject.SetActive(true);
            image_CraftingItems[archemyItemQueue.Count].sprite = archemyItems[archemyItemArrayNumber].itemImage;
        }
    }

    public void UpButton()
    {
        if (page != 1)
            page--;
        else
            page = 1 + archemyItems.Length / theNumberOfSlot; // 최대 페이지

        ClearSlot();
        PageSetting();
    }

    public void DownButton()
    {
        if (page < 1 + archemyItems.Length / theNumberOfSlot)
            page++;
        else
            page = 1;

        ClearSlot();
        PageSetting();
    }

    private void ClearSlot()
    {
        for (int i = 0; i < theNumberOfSlot; i++)
        {
            image_ArchemyItems[i].sprite = null;
            image_ArchemyItems[i].gameObject.SetActive(false);
            btn_ArchemyItems[i].gameObject.SetActive(false);
            text_ArchemyItems[i].text = "";
        }
    }

    private void PageSetting()
    {
        int pageArrayStartNumber = (page - 1) * theNumberOfSlot; //  4의 배수
        
        for (int i = pageArrayStartNumber; i < archemyItems.Length; i++)
        {
            if (i == page * theNumberOfSlot)
                break;

            image_ArchemyItems[i - pageArrayStartNumber].sprite = archemyItems[i].itemImage;
            image_ArchemyItems[i - pageArrayStartNumber].gameObject.SetActive(true);
            btn_ArchemyItems[i - pageArrayStartNumber].gameObject.SetActive(true);
            text_ArchemyItems[i - pageArrayStartNumber].text = archemyItems[i].itemName + "\n" + archemyItems[i].itemDescription;
        }
    }

과정이 9.3 건축 : 페이지 시스템 포스트와 매우 비슷하기 때문에 설명 생략.

image

위 페이지로 가는 버튼 이벤트에 UpButton() 함수 호출하도록 등록.

image

아래 페이지로 가는 버튼 이벤트에 DownButton() 함수 호출하도록 등록.

image

이미지 4 개, 텍스트 4개, 버튼 4 개 이렇게 12 개 UI 오브젝트들로 페이지 바뀔 때마다 새롭게 세팅해서 재활용 해 쓸 것이다. 이들을 할당해준다.



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Unity Lesson 3 카테고리 내 다른 글 보러가기

댓글 남기기