#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