차트 - 2
차트정보를 로드시키는 로딩씬을 따로 만들었다.

로딩씬으로 넘어오기 위한 코드를 위해 BackendAuth.cs를 조금 수정해야한다.
로딩씬으로 넘어오게 했고 유저정보를 받고 난후에 실행되던 것을 지웠다.
using BackEnd; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class BackendAuth : MonoBehaviour { public InputField id; public InputField password; public void CustomSignUp() { BackendReturnObject bro = Backend.BMember.CustomSignUp(id.text, password.text); if (bro.IsSuccess()) { Debug.Log("회원가입 완료"); CustomLogin(); Nickname(); SceneMove(); } else { switch (bro.GetStatusCode()) { case "409": Debug.Log("중복된 customId 가 존재하는 경우"); CustomLogin(); SceneMove(); break; case "403": Debug.Log("출시설정이 테스트 인데 AU가 10을 초과한 경우"); break; } } } void CustomLogin() { BackendReturnObject bro = Backend.BMember.CustomLogin(id.text, password.text); if (bro.IsSuccess()) { Debug.Log("로그인 완료"); } else { switch (bro.GetStatusCode()) { case "401": Debug.Log("존재하지 않는 아이디의 경우 or 비밀번호가 틀린 경우"); break; case "403": Debug.Log("차단당한 유저인 경우 or 출시설정이 테스트 인데 AU가 10을 초과한 경우"); break; } } } void Nickname() { Backend.BMember.CreateNickname(id.text); } void SceneMove() { SceneManager.LoadScene("로딩"); } } |
로딩을 구현하기 전에 차트부터 정리하고 가자

4개의 차트를 만들었으니 4개의 스크립트를 만들었다.
안의 코드는 이름만 다르지 다 비슷해서 하나의 스크립트 코드로만 적어두겠다.
using BackEnd; using LitJson; using System.Collections; using System.Collections.Generic; using UnityEngine; public class BoxChart : MonoBehaviour { public static BoxChart instance; private void Awake() { instance = this; } const string field = "9357"; public BoxChartInfo[] boxChartInfos; [System.Obsolete] public void LoadChart(System.Action callback) { BackendAsyncClass.BackendAsync(Backend.Chart.GetChartContents, field, (backendCallback) => { JsonData jsonData = backendCallback.GetReturnValuetoJSON()["rows"]; boxChartInfos = new BoxChartInfo[jsonData.Count]; for (int i = 0; i < jsonData.Count; i++) { JsonData rowData = jsonData[i]; boxChartInfos[i].name = rowData["Name"]["S"].ToString(); boxChartInfos[i].dice01Grade = (DiceGrade)System.Enum.Parse(typeof(DiceGrade), rowData["DiceGrade01"]["S"].ToString()); boxChartInfos[i].dice01Number = int.Parse(rowData["DiceGrade01Number"]["S"].ToString()); boxChartInfos[i].dice02Grade = (DiceGrade)System.Enum.Parse(typeof(DiceGrade), rowData["DiceGrade02"]["S"].ToString()); boxChartInfos[i].dice02Number = int.Parse(rowData["DiceGrade02Number"]["S"].ToString()); boxChartInfos[i].dice03Grade = (DiceGrade)System.Enum.Parse(typeof(DiceGrade), rowData["DiceGrade03"]["S"].ToString()); boxChartInfos[i].dice03Number = int.Parse(rowData["DiceGrade03Number"]["S"].ToString()); boxChartInfos[i].dice04Grade = (DiceGrade)System.Enum.Parse(typeof(DiceGrade), rowData["DiceGrade04"]["S"].ToString()); boxChartInfos[i].dice04Number = int.Parse(rowData["DiceGrade04Number"]["S"].ToString()); boxChartInfos[i].gold = int.Parse(rowData["Gold"]["S"].ToString()); } if (callback != null) callback(); }); } } [System.Serializable] public struct BoxChartInfo { public string name; public DiceGrade dice01Grade; public int dice01Number; public DiceGrade dice02Grade; public int dice02Number; public DiceGrade dice03Grade; public int dice03Number; public DiceGrade dice04Grade; public int dice04Number; public int gold; } |
엑셀의 정보 하나를 구조체 하나로 만들어서 그것을 배열에다가 정보를 모두 담았다.
LoadChart 함수로 모든 정보를 다 담으면 콜백하도록 만들었다.
이제 로딩 코드다.
using BackEnd; using LitJson; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class Loading : MonoBehaviour { AsyncOperation operation; public void Start() { LoadScene(); } public void LoadScene() { StartCoroutine(LoadSceneCoroutine()); } [System.Obsolete] IEnumerator LoadSceneCoroutine() { yield return null; operation = SceneManager.LoadSceneAsync("로비"); operation.allowSceneActivation = false; while (!operation.isDone) { yield return null; UserInfo.instance.UserInfoLoad(() => { BoxChart.instance.LoadChart(() => { DiceChart.instance.LoadDiceChart(() => { DayShopChart.instance.LoadDayShopChart(() => { RandomBoxShopChart.instance.LoadRandomBoxShopChart(() => { operation.allowSceneActivation = true; }); }); }); }); }); break; } } } |
비동기로 로드를 하도록 했고 모든 차트가 다 로드가 되면 자동으로 다음 씬으로 넘어갈 것이다.
재대로 작동이 됬는지 확인하기 위해 인스펙터 창에 데이터가 나타나도록 만들었다.
결과를 보니 정상적으로 차트를 불러오고 있었다.

댓글 0