using System; using System.Collections; using OneStore.Common; // 지우면 안됨 using TMPro; using UnityEngine; using UnityEngine.Networking; using UnityEngine.U2D; public class TitleInfo : MonoBehaviour { [SerializeField] TextMeshProUGUI label_msg, t_ver; [SerializeField] GameObject go_LobbyUI; const string VERSION_URL = "https://filgoodbanditshomepage.web.app/NightWard.txt"; private void Awake() { Screen.sleepTimeout = SleepTimeout.NeverSleep; Application.targetFrameRate = 60; go_LobbyUI.SetActive(false); } private void Start() { SetVersionText(); label_msg.text = "게임 버전 확인 중..."; StartCoroutine(LoadVersionData( OnVersionSuccess, OnVersionFail )); } void SetVersionText() { t_ver.text = Application.version; #if UNITY_EDITOR t_ver.text += "(E)"; #else t_ver.text += StoreEnvironment.GetStoreType() == StoreType.ONESTORE ? "(O)" : "(G)"; #endif } void OnVersionFail() { PopupUI.Ins.Set("게임 업데이트가 필요합니다.", DSUtil.Quit, DSUtil.Quit); } void OnVersionSuccess() { StartCoroutine(Co_Success()); } IEnumerator Co_Success() { label_msg.text = "게임 데이터를 읽고 있습니다."; // 테이블 로딩 대기 while (!TableChecker.Ins.CheckAllLoad()) yield return null; // UI 아틀라스 로드 yield return AddrResourceMgr.Ins.LoadObjectSequential( "MainUI/UIAtlas.spriteatlasv2", atlas => UIAtlasMgr.Ins.Set(atlas) ); label_msg.text = "로비로 진입 중입니다."; yield return null; // 연출용 대기 (필요 없으면 제거 가능) yield return new WaitForSeconds(3f); gameObject.SetActive(false); go_LobbyUI.SetActive(true); SoundInfo.Ins.Play_BGM(eBGM.b001_BGM); } IEnumerator LoadVersionData(Action success, Action fail) { using (UnityWebRequest www = UnityWebRequest.Get(VERSION_URL)) { yield return www.SendWebRequest(); // 네트워크 에러 처리 if (www.result != UnityWebRequest.Result.Success) { Debug.LogError($"Version check failed : {www.error}"); fail?.Invoke(); yield break; } string serverVersionText = www.downloadHandler.text; if (string.IsNullOrEmpty(serverVersionText)) { Debug.LogError("Version text is empty"); fail?.Invoke(); yield break; } // 개행 / 공백 제거 serverVersionText = serverVersionText.Trim(); Version serverVersion; Version clientVersion; // 안전한 버전 파싱 if (!Version.TryParse(serverVersionText, out serverVersion) || !Version.TryParse(Application.version, out clientVersion)) { Debug.LogError($"Version parse failed : {serverVersionText}"); fail?.Invoke(); yield break; } if (serverVersion > clientVersion) fail?.Invoke(); else success?.Invoke(); } } }