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");
                }
            });

        }
        
    }

}