All checks were successful
Plugin Library CI / publish (01.HybridCLR) (push) Successful in 4s
Plugin Library CI / publish (02.InformationSave) (push) Successful in 3s
Plugin Library CI / publish (03.YooAsset) (push) Successful in 33s
Plugin Library CI / publish (04.AudioCore) (push) Successful in 2s
Plugin Library CI / publish (05.TableTextConversion) (push) Successful in 3s
Plugin Library CI / publish (06.UIFarme) (push) Successful in 15s
Plugin Library CI / publish (07.RKTools) (push) Successful in 3s
Plugin Library CI / publish (08.UniTask) (push) Successful in 3s
Plugin Library CI / publish (10.StoryEditor) (push) Successful in 3s
Plugin Library CI / publish (10.XNode) (push) Successful in 3s
Plugin Library CI / publish (00.BuildOriginality) (push) Successful in 4s
Plugin Library CI / publish (00.StaryEvo) (push) Successful in 4s
Plugin Library CI / publish (00.StaryEvoTools) (push) Successful in 19s
Plugin Library CI / publish (09.CodeChecker) (push) Successful in 16s
Plugin Library CI / publish (11.PointCloudTools) (push) Successful in 3s
89 lines
3.7 KiB
C#
89 lines
3.7 KiB
C#
using System;
|
||
using System.Linq;
|
||
using UnityEditor;
|
||
using UnityEngine;
|
||
|
||
namespace Stary.Evo.Editor
|
||
{
|
||
public class ChangePlayerSchema
|
||
{
|
||
public static PLayerMode PLayerMode
|
||
{
|
||
get => _pLayerMode;
|
||
set => SetPlayerMode(value);
|
||
}
|
||
|
||
private static PLayerMode _pLayerMode;
|
||
|
||
private const string EditorSimulateMode = "Evo/Schema/ChangePlayer/EditorSimulateMode(调试)";
|
||
private const string HostPlayMode = "Evo/Schema/ChangePlayer/HostPlayMode(联机)";
|
||
private const string LocalPlayMode = "Evo/Schema/ChangePlayer/LocalPlayMode(本地)";
|
||
private const string WebPlayMode = "Evo/Schema/ChangePlayer/WebPlayMode(Web)/WebNormal(正常)";
|
||
private const string WeChatPlayMode = "Evo/Schema/ChangePlayer/WebPlayMode(Web)/WeChatPlayMode(微信)";
|
||
[MenuItem(EditorSimulateMode, false,3)]
|
||
private static void SetEditorMode() => SetPlayerMode(PLayerMode.EDITOR_SIMULATEMODE);
|
||
[MenuItem(HostPlayMode, false,3)]
|
||
private static void SetHostMode() => SetPlayerMode(PLayerMode.HOST_PLAYMODE);
|
||
[MenuItem(LocalPlayMode, false,3)]
|
||
private static void SetLocalMode() => SetPlayerMode(PLayerMode.LOCAL_PLAYMODE);
|
||
[MenuItem(WebPlayMode)]
|
||
private static void SetWebMode() => SetPlayerMode(PLayerMode.WEB_PLAYMODE);
|
||
[MenuItem(WeChatPlayMode)]
|
||
private static void SetWeChatModeMode() => SetPlayerMode(PLayerMode.WEIXINMINIGAME);
|
||
|
||
[MenuItem(EditorSimulateMode, true,3)]
|
||
private static bool ValidateModeMenu()
|
||
{
|
||
string platform = CustomEditorPrefs.GetString("ChangePlayerSchema");
|
||
Menu.SetChecked(EditorSimulateMode, platform == PLayerMode.EDITOR_SIMULATEMODE.ToString());
|
||
Menu.SetChecked(HostPlayMode, platform == PLayerMode.HOST_PLAYMODE.ToString());
|
||
Menu.SetChecked(LocalPlayMode, platform == PLayerMode.LOCAL_PLAYMODE.ToString());
|
||
Menu.SetChecked(WebPlayMode, platform == PLayerMode.WEB_PLAYMODE.ToString());
|
||
Menu.SetChecked(WeChatPlayMode, platform == PLayerMode.WEIXINMINIGAME.ToString());
|
||
Debug.Log($"ChangePlayerSchema:{platform}");
|
||
return true;
|
||
}
|
||
|
||
public static void SetPlayerMode(PLayerMode mode)
|
||
{
|
||
// 清除所有旧模式定义
|
||
var currentTarget = EditorUserBuildSettings.selectedBuildTargetGroup;
|
||
if (currentTarget == BuildTargetGroup.Unknown) return;
|
||
|
||
var defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(currentTarget)
|
||
.Split(';')
|
||
.Where(d => !Enum.GetNames(typeof(PLayerMode)).Contains(d))
|
||
.ToList();
|
||
|
||
// 添加新模式
|
||
defines.Add(mode.ToString());
|
||
PlayerSettings.SetScriptingDefineSymbolsForGroup(currentTarget, string.Join(";", defines));
|
||
_pLayerMode = mode;
|
||
CustomEditorPrefs.SetString("ChangePlayerSchema", _pLayerMode.ToString());
|
||
ValidateModeMenu();
|
||
AssetDatabase.Refresh();
|
||
// 添加解决方案文件重新生成逻辑
|
||
EditorApplication.delayCall += () =>
|
||
{
|
||
//EditorApplication.ExecuteMenuItem("Assets/Open C# Project");
|
||
UnityEditor.Compilation.CompilationPipeline.RequestScriptCompilation();
|
||
Debug.Log($"当前编译符号: {string.Join(";", defines)}"); // 添加调试日志
|
||
};
|
||
}
|
||
}
|
||
|
||
public enum PLayerMode
|
||
{
|
||
//编辑仿真模式,
|
||
EDITOR_SIMULATEMODE,
|
||
|
||
//联机运行模式
|
||
HOST_PLAYMODE,
|
||
//本地运行模式
|
||
LOCAL_PLAYMODE,
|
||
// //web运行模式
|
||
WEB_PLAYMODE,
|
||
|
||
WEIXINMINIGAME
|
||
}
|
||
} |