using System.Collections; using System.Threading.Tasks; using UnityEditor; using UnityEngine; using UnityEngine.SceneManagement; namespace JEngine.Editor { /// /// 跳转场景 /// internal static class ChangeScene { [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] private static async void DoChange() { var prefix = $"JEngine.Editor.Setting.{Application.productName}.{SetData.GetPrefix()}."; var jump = PlayerPrefs.GetString($"{prefix}.JumpStartUpScene", "1") == "1"; if (!jump) return; var scene = SceneManager.GetActiveScene(); var path = PlayerPrefs.GetString($"{prefix}.StartUpScenePath", "Assets/Init.unity"); if (scene.path != path) { string name = path .Substring(path.LastIndexOf('/') + 1) .Replace(".unity", ""); var op = SceneManager.LoadSceneAsync(name); while (SceneManager.GetActiveScene().path != path) { if (!Application.isPlaying) return; EditorUtility.DisplayProgressBar("JEngine", Setting.GetString(SettingString.JumpToStartUpScene), op.progress); await Task.Delay(100); } EditorUtility.ClearProgressBar(); DynamicGI.UpdateEnvironment(); } var comp = Object.FindFirstObjectByType(); if (comp == null) { Debug.LogWarning("没有找到InitJEngine脚本,无法检验秘钥是否正确"); return; } var key = comp.key; var k = PlayerPrefs.GetString($"{prefix}.EncryptPassword", ""); if (string.IsNullOrEmpty(k)) { PlayerPrefs.SetString($"{prefix}.EncryptPassword", key); } else { if (key != k) { var res = EditorUtility.DisplayDialog( string.Format(Setting.GetString(SettingString.MismatchDLLKeyTitle), k, key), string.Format(Setting.GetString(SettingString.MismatchDLLKeyContext), k, key), Setting.GetString(SettingString.Ok), Setting.GetString(SettingString.Ignore)); if (res) { comp.key = k; } } } } } }