2025-07-17 18:26:28 +08:00

128 lines
3.8 KiB
C#

using UnityEditor;
using UnityEngine;
using YooAsset;
namespace ET
{
public enum PlatformType
{
None,
Android,
IOS,
Windows,
MacOS,
Linux
}
/// <summary>
/// ET菜单顺序
/// </summary>
public static class ETMenuItemPriority
{
public const int BuildTool = 1001;
public const int ChangeDefine = 1002;
public const int Compile = 1003;
public const int Reload = 1004;
public const int NavMesh = 1005;
public const int ServerTools = 1006;
}
public class BuildEditor : EditorWindow
{
private PlatformType activePlatform;
private PlatformType platformType;
private BuildOptions buildOptions;
private GlobalConfig globalConfig;
[MenuItem("ET/Build Tool", false, ETMenuItemPriority.BuildTool)]
public static void ShowWindow()
{
GetWindow<BuildEditor>(DockDefine.Types);
}
private void OnEnable()
{
globalConfig = AssetDatabase.LoadAssetAtPath<GlobalConfig>("Assets/Resources/GlobalConfig.asset");
#if UNITY_ANDROID
activePlatform = PlatformType.Android;
#elif UNITY_IOS
activePlatform = PlatformType.IOS;
#elif UNITY_STANDALONE_WIN
activePlatform = PlatformType.Windows;
#elif UNITY_STANDALONE_OSX
activePlatform = PlatformType.MacOS;
#elif UNITY_STANDALONE_LINUX
activePlatform = PlatformType.Linux;
#else
activePlatform = PlatformType.None;
#endif
platformType = activePlatform;
}
private void OnGUI()
{
EditorGUILayout.LabelField("PlatformType ");
this.platformType = (PlatformType)EditorGUILayout.EnumPopup(platformType);
EditorGUILayout.LabelField("BuildOptions ");
this.buildOptions = (BuildOptions)EditorGUILayout.EnumFlagsField(this.buildOptions);
GUILayout.Space(5);
if (GUILayout.Button("BuildPackage"))
{
if (this.platformType == PlatformType.None)
{
Log.Error("please select platform!");
return;
}
if (this.globalConfig.CodeMode != CodeMode.Client)
{
Log.Error("build package CodeMode must be CodeMode.Client, please select Client");
return;
}
if (this.globalConfig.EPlayMode == EPlayMode.EditorSimulateMode)
{
Log.Error("build package EPlayMode must not be EPlayMode.EditorSimulateMode, please select HostPlayMode");
return;
}
if (platformType != activePlatform)
{
switch (EditorUtility.DisplayDialogComplex("Warning!", $"current platform is {activePlatform}, if change to {platformType}, may be take a long time", "change", "cancel", "no change"))
{
case 0:
activePlatform = platformType;
break;
case 1:
return;
case 2:
platformType = activePlatform;
break;
}
}
BuildHelper.Build(this.platformType, this.buildOptions);
return;
}
if (GUILayout.Button("ExcelExporter"))
{
ToolsEditor.ExcelExporter();
return;
}
if (GUILayout.Button("Proto2CS"))
{
ToolsEditor.Proto2CS();
return;
}
GUILayout.Space(5);
}
}
}