#if UNITY_EDITOR
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.Build;
namespace TyphoonUI
{
[InitializeOnLoad]
public class BuildChecker
{
static BuildChecker()
{
// 在构建之前执行检查操作
BuildPlayerWindow.RegisterBuildPlayerHandler(BuildPlayerOptionsCallback);
}
private static void BuildPlayerOptionsCallback(BuildPlayerOptions buildPlayerOptions)
{
CheckUIPackages();
BuildPlayerWindow.DefaultBuildMethods.BuildPlayer(buildPlayerOptions);
}
///
/// 检查包名
///
private static void CheckUIPackages()
{
var packageNames = new HashSet();
var packages = TyphoonUIEditor.GetAllPackages();
foreach (var package in packages)
{
if (UIPackageEditor.PackageIsChanged(package))
{
throw new BuildFailedException(
$"存在未更新的UIPackage:{package.name},手动执行:'TyphoonUI->更新UIPackage' 进行更新,(别忘记同步更新AB或AA包资源)");
}
}
foreach (var package in packages)
{
bool isNew = packageNames.Add(package.name);
if (!isNew)
{
throw new BuildFailedException($"UIPackage存在重复包名:{package.name},请重新调整");
}
}
}
}
}
#endif