Files
plugin-library/Assets/00.StaryEvoTools/Editor/BuildAsset/ChangePlayerMode/ChangePlayerMode.cs
stary 4c78ed674c
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
增加微信小程序
2026-04-18 23:35:35 +08:00

89 lines
3.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
}
}