Files
plugin-library/Assets/00.StaryEvoTools/Editor/BuildAsset/ChangePlayerMode/ChangeDeviceMode.cs
zhangzheng 2c230960db 修改
2026-03-25 16:58:26 +08:00

76 lines
2.6 KiB
C#

using System;
using System.Linq;
using UnityEditor;
using UnityEngine;
namespace Stary.Evo.Editor
{
public class ChangeDeviceMode
{
public static DeviceMode DeviceMode
{
get => _deviceMode;
set => SetDeviceMode(value);
}
private static DeviceMode _deviceMode;
private const string EditorRokidMode = "Evo/Schema/ChangeDevice/Rokid";
private const string EditorXrealMode = "Evo/Schema/ChangeDevice/Xreal";
[MenuItem(EditorRokidMode)]
private static void SetRokidMode() => SetDeviceMode(DeviceMode.Evo_Rokid);
[MenuItem(EditorXrealMode)]
private static void SetXrealMode() => SetDeviceMode(DeviceMode.Evo_Xreal);
// [MenuItem(WebPlayMode)]
// private static void SetWebMode() => SetPlayerMode(HotUpdateMode.WEB_PLAYMODE);
[MenuItem(EditorRokidMode, true)]
private static bool ValidateModeMenu()
{
string platform = CustomEditorPrefs.GetString("ChangeDeviceSchema");
Menu.SetChecked(EditorRokidMode, platform == DeviceMode.Evo_Rokid.ToString());
Menu.SetChecked(EditorXrealMode, platform == DeviceMode.Evo_Xreal.ToString());
//Menu.SetChecked(WebPlayMode, platform == HotUpdateMode.WEB_PLAYMODE.ToString());
Debug.Log($"ChangeDeviceSchema:{platform}");
return true;
}
public static void SetDeviceMode(DeviceMode mode)
{
// 清除所有旧模式定义
var currentTarget = EditorUserBuildSettings.selectedBuildTargetGroup;
if (currentTarget == BuildTargetGroup.Unknown) return;
var defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(currentTarget)
.Split(';')
.Where(d => !Enum.GetNames(typeof(DeviceMode)).Contains(d))
.ToList();
// 添加新模式
defines.Add(mode.ToString());
PlayerSettings.SetScriptingDefineSymbolsForGroup(currentTarget, string.Join(";", defines));
_deviceMode = mode;
CustomEditorPrefs.SetString("ChangeDeviceSchema", _deviceMode.ToString());
ValidateModeMenu();
AssetDatabase.Refresh();
// 添加解决方案文件重新生成逻辑
EditorApplication.delayCall += () =>
{
UnityEditor.Compilation.CompilationPipeline.RequestScriptCompilation();
Debug.Log($"当前编译符号: {string.Join(";", defines)}"); // 添加调试日志
};
}
}
public enum DeviceMode
{
//Xreal,
Evo_Xreal,
//Rokid,
Evo_Rokid,
}
}