123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- using TFramework;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEditor;
- using UnityEditor.PackageManager;
- using UnityEditor.PackageManager.Requests;
- public class Prepare
- {
- private const string PACKAGENAME = "com.code-philosophy.hybridclr";
- private const string PACKAGEGITPATH = "https://github.com/focus-creative-games/hybridclr_unity.git";
- static ListRequest _listRequest;
- [InitializeOnLoadMethod]
- public static void InitEnv()
- {
- if (CheckInstall()) return;
- _listRequest = Client.List();
- EditorApplication.update += Update;
- }
- public static bool CheckEnv()
- {
- bool isHaveEnv = false;
- foreach (var info in _listRequest.Result)
- {
- if(info.name==PACKAGENAME)
- {
- isHaveEnv = true;
- break;
- }
- }
- return isHaveEnv;
- }
- public static bool CheckInstall()
- {
- #if HybridCLR
- return new HybridCLR.Editor.Installer.InstallerController().HasInstalledHybridCLR();
- #else
- return false;
- #endif
- }
- private static void Update()
- {
- if (_listRequest.IsCompleted)
- {
- if (_listRequest.Status == StatusCode.Success)
- {
- if (!CheckEnv())
- {
- if (EditorUtility.DisplayDialog("环境检查提示", "当前不存在热更环境,是否导入环境?", "马上导入", "稍后再说"))
- {
- AddRequest addRequest = Client.Add(PACKAGEGITPATH);
- while (!addRequest.IsCompleted)
- {
- if (addRequest.Status == StatusCode.InProgress)
- Debug.Log(addRequest.Status);
- else
- {
- Debug.LogError($"安装热更环境【{PACKAGENAME}】出错");
- break;
- }
- }
- if (addRequest.IsCompleted)
- {
- if (addRequest.Status >= StatusCode.Failure)
- Debug.LogError(addRequest.Error.message);
- }
- }
- }
- else if(!IsAddSymbols())
- {
- AddDefineSymbols("HybridCLR");
- }
- else if (!CheckInstall())
- {
- EditorApplication.ExecuteMenuItem("HybridCLR/Installer...");
- }
- }
- else if (_listRequest.Status >= StatusCode.Failure)
- Debug.Log(_listRequest.Error.message);
- EditorApplication.update -= Update;
- }
- }
- public static void AddDefineSymbols(string symbol)
- {
- BuildTargetGroup buildTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup;
- string symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup);
- if (symbols.Split(';').Contains(symbol)) return;
- symbols = string.IsNullOrEmpty(symbols) ? symbol : symbols += $";{symbol}";
- PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, symbols);
- }
- public static bool IsAddSymbols()
- {
- #if HybridCLR
- return true;
- #else
- return false;
- #endif
- }
- }
|