포더킹 모작 Title UI 기능 구현

김김김김·2024년 2월 27일
post-thumbnail

Title UI

포더킹 모작 제작 중 Title UI관련하여 기능을 구현하게 되었다.
Title UI는 다른 UI와 마찬가지로 바인딩을 통해 구현되어 있다.

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using UniRx;
using UniRx.Triggers;
using System;

public class TitlePopup : UIPopup
{
    enum Buttons
    {
        NewGameButton,
        LoadGameButton,
        QuitButton
    }

    public override void Init()
    {
        base.Init();

        BindButton(typeof(Buttons));

        foreach (Buttons buttonIndex in Enum.GetValues(typeof(Buttons)))
        {
            Button button = GetButton((int)buttonIndex);
            button.BindViewEvent(OnClickButton, ViewEvent.LeftClick, this);
            SetSpriteStateInButton(button);
        }
    }

    private void SetSpriteStateInButton(Button button)
    {
        button.transition = Selectable.Transition.SpriteSwap;

        SpriteState spriteState = button.spriteState;

        button.spriteState = spriteState;

        button.image.sprite = Managers.Resource.LoadSprite("TitleButton");
        spriteState.selectedSprite = Managers.Resource.LoadSprite("TitleButtonHover");
        spriteState.highlightedSprite = Managers.Resource.LoadSprite("TitleButtonHover");
    }

    private void OnClickButton(PointerEventData eventData)
    {
        Buttons button = Enum.Parse<Buttons>(eventData.pointerEnter.name);
        Debug.Log(button);
        ProcessButton(button);
    }

    private void ProcessButton(Buttons button)
    {
        switch (button)
        {
            case Buttons.NewGameButton:
                OnClickPlayButton();
                break;
            case Buttons.QuitButton:
                OnClickQuitButton();
                break;
        }
    }
    private void OnClickPlayButton()
    {
        Managers.Game.GameStart((StageID)1);
    }
    private void OnClickQuitButton()
    {
        Application.Quit();
    }
}

Title UI

다음과 같이 기능을 수행하는 것을 확인할 수가 있다.

카메라는 현재 제작중에 있으니 크게 신경쓰지는 않아도 된다.

0개의 댓글