포더킹 모작 제작 중 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();
}
}

다음과 같이 기능을 수행하는 것을 확인할 수가 있다.
카메라는 현재 제작중에 있으니 크게 신경쓰지는 않아도 된다.