게임클라이언트 프로그래밍/Unity
UI 연습(Login->Title)
Game Client Lee Hwanguk
2023. 2. 11. 20:20
#Tilte 화면에 Guet를 누르면 Loading, 다른 로그인 방법을 선택하면 popup login(ID,Password) 로
#text 크기를 맞추는게 가장 어렵다 ...
#UiButtons 에서 onclick을 받고 UiLoginMain에서 debug 하게 만들었다
#Title 로 넘어가게 만들어보자
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UiButtons : MonoBehaviour
{
public enum eBtnType
{
Gamecenter,
Facebook,
Google,
Guest
}
public Button[] btns;
public System.Action<eBtnType> onClick;
void Start()
{
for(int i=0; i<btns.Length; i++)
{
int index = i;
btns[index].onClick.AddListener(() => {
this.onClick((eBtnType)index);
});
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class UiLoginMain : MonoBehaviour
{
public UiButtons uiButtons;
void Start()
{
this.uiButtons.onClick = (btn) => {
Debug.Log(btn);
};
}
}
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UI;
public class LoadingBar : MonoBehaviour
{
public Slider slider;
//public void Init(float val)
//{
// Debug.Log("Init");
// this.slider.value = val;
//}
void Start()
{
StartCoroutine(Loading());
}
IEnumerator Loading()
{
while(this.slider.value <=this.slider.maxValue)
{
if(this.slider.value==this.slider.maxValue)
{
Debug.Log("<color=yellow>Load Complet</color>");
break;
}
this.slider.value += 2;
Debug.Log(this.slider.value);
yield return null;
}
}
}
#Tile 화면에서 Guet 버튼을 누르면 Loading 슬라이드가 나오는 장면을 만드는 중이다
#시간이 지남에 따라 로딩바가 채워지고 maxValue에 도착하면 Load Complet를 출력하고싶다
#처음 시도는 Time.deltatime을 코루틴 안에서 사용하려 했으나 작동하지 않았다
#while문 안에서 직접 value를 더해주니 잘 작동한다
using System.Collections;
using System.Collections.Generic;
using TMPro;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UI;
public class LoadingBar : MonoBehaviour
{
public Slider slider;
public TMP_Text detaText;
//public void Init(float val)
//{
// Debug.Log("Init");
// this.slider.value = val;
//}
void Start()
{
StartCoroutine(Loading());
}
IEnumerator Loading()
{
while(this.slider.value <=this.slider.maxValue)
{
if(this.slider.value==this.slider.maxValue)
{
Debug.Log("<color=yellow>Load Complet</color>");
break;
}
this.slider.value += 2;
//Debug.Log(this.slider.value);
var textGo = this.slider.transform.Find("Text (TMP)").GetComponent<TMP_Text>();
textGo.text = string.Format("Downloading...{0:#,###}/{1:#,###}", this.slider.value,this.slider.maxValue);
yield return null;
}
}
}
#Text까지 보여주자
#MainScene에서 Guest버튼을 누르면 LoadScene으로 전환
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class UiButtons : MonoBehaviour
{
public enum eBtnType
{
Gamecenter,
Facebook,
Google,
Guest
}
public Button[] btns;
public System.Action<eBtnType> onClick;
void Start()
{
for(int i=0; i<btns.Length; i++)
{
int index = i;
btns[index].onClick.AddListener(() => {
this.onClick((eBtnType)index);
if(index==3) //Guest 일때 login 화면 없이 loading 으로
{
Debug.Log("<color=yellow> Guest</color>");
AsyncOperation oper = SceneManager.LoadSceneAsync("LoadScene");
}
});
}
}
}