유니티3D 프로그래밍
Unity UGUI Test (21.04.20) 본문
게임의 Scene UI들을 구현해본다.
테스트 영상
현재 Scene의 구성 오브젝트 들이다.
UIPrefab이 로비 화면을 구성하는 오브젝트다.
Greed의 내부에 있는 오브젝트는 화면 하단 6개의 버튼을 뜻하고
이름이 ~Info라고 끝나는 오브젝트들은 화면 상단의 프로필과 + 모양 버튼을 담당하는 오브젝트다.
Login은 오른쪽 하단의 facebook 이미지의 버튼인데 로그인과는 맞지 않는 형태라 생각해서 바꿀 예정.
아마 왼쪽 하단의 버튼이 로그인이 아닌가 생각됨.
스크립트는 UI와 LoginUI로 나뉘어져 있고 Title 스크립트에서 전체적인 스크립트 컨트롤을 관리하는 역할을 한다.
InputText
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class InputText : MonoBehaviour
{
public InputField inputTextID;
public InputField inputTextPassword;
public void ID(Text text)
{
text.text = inputTextID.text;
}
public void Password(Text text)
{
text.text = inputTextPassword.text;
}
}
LoginUIButton
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class LoginUiButton : MonoBehaviour
{
public Button btn;
}
LoginUIText : 빈 스크립트
UIPopupLogin
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UIPopupLogin : MonoBehaviour
{
public bool isCheck = false;
public Button btnClose;
public InputField inputEmail;
public InputField inputPwd;
public Button btnRemember;
public Button btnLogin;
public Button btnSignup;
public Button btnForgotPwd;
public GameObject[] arrChecks;
}
UIBudget
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UIBudget : MonoBehaviour
{
public Button btn;
public Text txtAmount;
public virtual void Init(int amount)
{
this.txtAmount.text = amount.ToString();
}
}
UIHeartBudget
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UIHeartBudget : UIBudget
{
public Text txtHeartAmount;
public int Max { get; set; }
public override void Init(int amount)
{
if (amount >= this.Max)
{
this.txtHeartAmount.text = this.Max.ToString();
this.txtAmount.text = "FULL";
}
else
{
base.Init(amount);
this.txtAmount.text = "00:32";
}
}
}
UILogin
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UILogin : MonoBehaviour
{
public Button loginBtn;
}
UIMenuButton
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UIMenuButton : MonoBehaviour
{
public Button btn;
}
UIProfile : 빈 프로젝트
UITitle
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UITitle : MonoBehaviour
{
public enum eMenuType
{
Items, Shop, Messages, Mission, Ranking, Settings
}
public enum eBudgetType
{
Heart, Coin, Dia
}
public UIProfile uiProfile;
public UIBudget[] arrBudgets;
public UIMenuButton[] arrMenuButtons;
public Button loginButton;
private void Start()
{
this.Init();
}
public void Init()
{
for (int i = 0; i < this.arrMenuButtons.Length; i++)
{
var btn = this.arrMenuButtons[i].btn;
var idx = i; //캡쳐링
btn.onClick.AddListener(() => {
Debug.Log((eMenuType)idx);
});
}
for (int i = 0; i < this.arrBudgets.Length; i++)
{
UIBudget uiBudget = this.arrBudgets[i];
var btn = uiBudget.btn;
var idx = i;
btn.onClick.AddListener(() => {
Debug.Log((eBudgetType)idx);
});
}
var heartBudget = (UIHeartBudget)GetUIBudget(eBudgetType.Heart);
heartBudget.Max = 5;
heartBudget.Init(6);
var coinBudget = this.GetUIBudget(eBudgetType.Coin);
coinBudget.Init(10000);
}
public UIBudget GetUIBudget(eBudgetType budgetType)
{
return this.arrBudgets[(int)budgetType];
}
}
Title
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Title : MonoBehaviour
{
public UITitle uiTitle;
public UIPopupLogin uiPopupLogin;
private void Start()
{
this.Init();
}
public void Init()
{
this.uiTitle.loginButton.onClick.AddListener(() => {
this.uiPopupLogin.gameObject.SetActive(true);
this.uiPopupLogin.inputEmail.text = "";
this.uiPopupLogin.inputPwd.text = "";
});
this.uiPopupLogin.btnClose.onClick.AddListener(() => {
this.uiPopupLogin.gameObject.SetActive(false);
});
this.uiPopupLogin.btnLogin.onClick.AddListener(() => {
var email = this.uiPopupLogin.inputEmail.text;
var pwd = this.uiPopupLogin.inputPwd.text;
Debug.LogFormat("{0}, {1}", email, pwd);
});
this.uiPopupLogin.btnSignup.onClick.AddListener(() => {
Debug.Log("signup");
});
this.uiPopupLogin.btnForgotPwd.onClick.AddListener(() => {
Debug.Log("forgot password");
});
this.uiPopupLogin.btnRemember.onClick.AddListener(() => {
Debug.Log("remember");
if (this.uiPopupLogin.isCheck)
{
this.uiPopupLogin.isCheck = false;
this.uiPopupLogin.arrChecks[0].SetActive(false);
this.uiPopupLogin.arrChecks[1].SetActive(true);
}
else
{
this.uiPopupLogin.isCheck = true;
this.uiPopupLogin.arrChecks[0].SetActive(true);
this.uiPopupLogin.arrChecks[1].SetActive(false);
}
});
}
}
빈 프로젝트들은 추후에 다른 기능을 추가할 예정이다.
'Unity > 수업내용' 카테고리의 다른 글
Unity UGUI 미션 창 구현 (21.04.23) (0) | 2021.04.23 |
---|---|
Unity UGUI Test 2 (21.04.20~21) (0) | 2021.04.20 |
Unity 6주차 5일 수업 내용 : 다단계 Scene 구성 (21.04.06) (0) | 2021.04.16 |
Unity 6주차 3,4,5일 수업 내용 : Zombie (21.04.14) (0) | 2021.04.16 |
Unity 6주차 2일 수업 내용 : 쿠키런 구현해보기 (21.04.13) (0) | 2021.04.13 |