using Cysharp.Threading.Tasks; using UVC.Studio.Config; using System; using UnityEngine; using UVC.Core; using UVC.Data; using UVC.Locale; using UVC.Util; namespace UVC.Studio { [DefaultExecutionOrder(100)] public class StudioAppMain : SingletonApp { public Action Initialized; /// /// 초기 화 메서드입니다. /// Awake 메서드에서 호출되며, MonoBehaviour가 생성될 때 한 번만 실행됩니다. /// protected override async void Init() { // 플레이 모드가 아닐 경우, 초기화 로직을 실행하지 않습니다. if (!Application.isPlaying) return; #if !UNITY_WEBGL || UNITY_EDITOR //로깅 설정 UVC.Log.Log4netCodeConfigurator.Setup(); #endif RTGLite.RTG.get.initialized += OnRTGInit; await SettupConfigAsync(); if (Initialized != null) { Initialized.Invoke(); } } void Start() { //Tester.RunAllTests(); } private async UniTask SettupConfigAsync() { if (StudioAppConfig.LoadConfig()) { Application.targetFrameRate = StudioAppConfig.Config.TargetFrameRate; //기본 언어 설정 bool success = LocalizationManager.Instance.LoadDefaultLocalizationData(StudioAppConfig.Config.Language); Debug.Log($"LocalizationManager: LoadDefaultLocalizationData success: {success}"); if (!Application.isEditor && Application.platform == RuntimePlatform.WindowsPlayer) { //창 설정 if (StudioAppConfig.Config.Window != null) { WindowTools.Instance.Init(StudioAppConfig.Config.Window); } } } //사용자 DataMask 설정 AppData에서 로드 await UserSetting.LoadFromAppData(); } private void OnRTGInit() { RTGLite.RTGizmos.get.CreateViewGizmo(RTGLite.RTCamera.get.settings.targetCamera); } } }