Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
- Добавлен компонент подмены спрайтов игрока перед началом игры. - Обновлены сцена уровня, префабы, шейдеры, настройки импорта и данные призов. - Зафиксирован embedded-пакет Unity MCP 9.6.8 и обновлены связанные файлы проекта.
111 lines
4.6 KiB
C#
111 lines
4.6 KiB
C#
using UnityEditor;
|
|
using UnityEditor.Build;
|
|
|
|
namespace MCPForUnity.Editor.Tools.Build
|
|
{
|
|
public static class BuildTargetMapping
|
|
{
|
|
public static bool TryResolveBuildTarget(string name, out BuildTarget target)
|
|
{
|
|
if (string.IsNullOrEmpty(name))
|
|
{
|
|
target = EditorUserBuildSettings.activeBuildTarget;
|
|
return true;
|
|
}
|
|
|
|
switch (name.ToLowerInvariant())
|
|
{
|
|
case "windows64": target = BuildTarget.StandaloneWindows64; return true;
|
|
case "windows": case "windows32": target = BuildTarget.StandaloneWindows; return true;
|
|
case "osx": case "macos": target = BuildTarget.StandaloneOSX; return true;
|
|
case "linux64": case "linux": target = BuildTarget.StandaloneLinux64; return true;
|
|
case "android": target = BuildTarget.Android; return true;
|
|
case "ios": target = BuildTarget.iOS; return true;
|
|
case "webgl": target = BuildTarget.WebGL; return true;
|
|
case "uwp": target = BuildTarget.WSAPlayer; return true;
|
|
case "tvos": target = BuildTarget.tvOS; return true;
|
|
// BuildTarget.VisionOS exists only in Unity 2023.2+ and late 2022.3 patches
|
|
#if UNITY_2023_2_OR_NEWER
|
|
case "visionos": target = BuildTarget.VisionOS; return true;
|
|
#endif
|
|
default:
|
|
if (System.Enum.TryParse(name, true, out target))
|
|
return true;
|
|
target = default;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static BuildTargetGroup GetTargetGroup(BuildTarget target)
|
|
{
|
|
switch (target)
|
|
{
|
|
case BuildTarget.StandaloneWindows:
|
|
case BuildTarget.StandaloneWindows64:
|
|
case BuildTarget.StandaloneOSX:
|
|
case BuildTarget.StandaloneLinux64:
|
|
return BuildTargetGroup.Standalone;
|
|
case BuildTarget.iOS: return BuildTargetGroup.iOS;
|
|
case BuildTarget.Android: return BuildTargetGroup.Android;
|
|
case BuildTarget.WebGL: return BuildTargetGroup.WebGL;
|
|
case BuildTarget.WSAPlayer: return BuildTargetGroup.WSA;
|
|
case BuildTarget.tvOS: return BuildTargetGroup.tvOS;
|
|
#if UNITY_2023_2_OR_NEWER
|
|
case BuildTarget.VisionOS: return BuildTargetGroup.VisionOS;
|
|
#endif
|
|
default: return BuildTargetGroup.Unknown;
|
|
}
|
|
}
|
|
|
|
public static NamedBuildTarget GetNamedBuildTarget(BuildTarget target)
|
|
{
|
|
return NamedBuildTarget.FromBuildTargetGroup(GetTargetGroup(target));
|
|
}
|
|
|
|
public static string TryResolveNamedBuildTarget(string name, out NamedBuildTarget namedTarget)
|
|
{
|
|
if (!TryResolveBuildTarget(name, out var buildTarget))
|
|
{
|
|
namedTarget = default;
|
|
return $"Unknown build target: '{name}'. Valid targets: windows64, osx, linux64, android, ios, webgl, uwp, tvos, visionos";
|
|
}
|
|
namedTarget = GetNamedBuildTarget(buildTarget);
|
|
return null;
|
|
}
|
|
|
|
public static string GetDefaultOutputPath(BuildTarget target, string productName)
|
|
{
|
|
string basePath = $"Builds/{target}";
|
|
switch (target)
|
|
{
|
|
case BuildTarget.StandaloneWindows:
|
|
case BuildTarget.StandaloneWindows64:
|
|
return $"{basePath}/{productName}.exe";
|
|
case BuildTarget.StandaloneOSX:
|
|
return $"{basePath}/{productName}.app";
|
|
case BuildTarget.StandaloneLinux64:
|
|
return $"{basePath}/{productName}.x86_64";
|
|
case BuildTarget.Android:
|
|
return EditorUserBuildSettings.buildAppBundle
|
|
? $"{basePath}/{productName}.aab"
|
|
: $"{basePath}/{productName}.apk";
|
|
case BuildTarget.iOS:
|
|
case BuildTarget.WebGL:
|
|
return $"{basePath}/{productName}";
|
|
default:
|
|
return $"{basePath}/{productName}";
|
|
}
|
|
}
|
|
|
|
public static int ResolveSubtarget(string subtarget)
|
|
{
|
|
if (string.IsNullOrEmpty(subtarget))
|
|
return (int)StandaloneBuildSubtarget.Player;
|
|
string lower = subtarget.ToLowerInvariant();
|
|
if (lower == "server")
|
|
return (int)StandaloneBuildSubtarget.Server;
|
|
return (int)StandaloneBuildSubtarget.Player;
|
|
}
|
|
}
|
|
}
|