Files
plugin-library/Assets/00.StaryEvoTools/Editor/BuildAsset/BuildAssetDataSetting.cs

263 lines
9.0 KiB
C#
Raw Normal View History

2025-03-31 11:16:52 +08:00
using System;
using System.Collections.Generic;
using Sirenix.OdinInspector;
using UnityEditor;
using UnityEngine;
using YooAsset;
using YooAsset.Editor;
namespace Stary.Evo.Editor
{
[CreateAssetMenu(fileName = "BuildAssetDataSetting", menuName = "Evo/BuildAssetDataSetting")]
2026-01-05 17:58:53 +08:00
public class BuildAssetDataSetting : SerializedScriptableObject
2025-03-31 11:16:52 +08:00
{
public void OnEnable()
{
2026-04-18 01:00:51 +08:00
#if UNITY_WEBGL
viewer = new ScriptableBuildPipelineViewer(packageName, selectedBuildPipelines.ToString(),
packageVersion);
#else
2026-01-07 18:20:13 +08:00
viewer = new MixedBuildPipelineViewer(packageName, selectedBuildPipelines.ToString(),
2026-01-05 17:58:53 +08:00
packageVersion);
2026-04-18 01:00:51 +08:00
#endif
2025-03-31 11:16:52 +08:00
oldVersionX = packageVersionX;
oldVersionY = packageVersionY;
oldVersionZ = packageVersionZ;
2026-01-05 17:58:53 +08:00
2025-03-31 11:16:52 +08:00
}
[HideInInspector] public string packageName;
2026-01-05 17:58:53 +08:00
[HideInInspector] public int packageVersionX = 1;
[HideInInspector] public int packageVersionY;
[HideInInspector] public int packageVersionZ;
2025-03-31 11:16:52 +08:00
private int oldVersionX = 1;
private int oldVersionY;
private int oldVersionZ;
[Title("目标环境", titleAlignment: TitleAlignments.Centered)]
[HorizontalGroup("BuildSetting"), HideLabel]
[OnValueChanged("SetEnvironmentType")]
public EnvironmentType environmentType;
2026-01-05 17:58:53 +08:00
// [Title("构建列表", titleAlignment: TitleAlignments.Centered)]
// [HorizontalGroup("BuildSetting"), HideLabel]
// [OnValueChanged("SetBuildPipelines")]
private BuildPipelineType selectedBuildPipelines = BuildPipelineType.ScriptableBuildPipeline;
2025-03-31 11:16:52 +08:00
private const string VerSersionMessage = "(小版本由打包叠加,中版本、大版本更新会重置小版本,如误操作,点击重置按钮即可)";
2025-04-27 10:22:16 +08:00
[Title("版本号", titleAlignment: TitleAlignments.Centered)]
2025-03-31 11:16:52 +08:00
[ReadOnly]
2025-04-27 10:22:16 +08:00
[HorizontalGroup("BuildSetting/PackageVersion"), HideLabel]
2025-03-31 11:16:52 +08:00
public string packageVersion;
2025-04-27 10:22:16 +08:00
[Title("版本设置切换", titleAlignment: TitleAlignments.Centered)]
[HorizontalGroup("BuildSetting/PackageVersion"), HideLabel, EnumToggleButtons]
2025-03-31 11:16:52 +08:00
[HideIf("environmentType", EnvironmentType.Debug)]
public VersionPosType VersionType;
2025-04-27 10:22:16 +08:00
[Title("升级版本", titleAlignment: TitleAlignments.Centered)]
[HorizontalGroup("BuildSetting/PackageVersion"), HideLabel, Button(Icon = SdfIconType.Plus)]
2025-03-31 11:16:52 +08:00
[HideIf("environmentType", EnvironmentType.Debug)]
public void AddBigVersion()
{
if (VersionType == VersionPosType.X)
{
packageVersionX++;
2025-04-27 10:22:16 +08:00
if (packageVersionZ > 0)
packageVersionZ = 0;
2025-03-31 11:16:52 +08:00
}
else if (VersionType == VersionPosType.Y)
{
packageVersionY++;
2025-04-27 10:22:16 +08:00
if (packageVersionZ > 0)
packageVersionZ = 0;
2026-01-05 17:58:53 +08:00
}
else if (VersionType == VersionPosType.Z)
2025-04-27 10:22:16 +08:00
{
packageVersionZ++;
2025-03-31 11:16:52 +08:00
}
GetPackageVersion();
}
2025-04-27 10:22:16 +08:00
[Title("降低版本", titleAlignment: TitleAlignments.Centered)]
[HorizontalGroup("BuildSetting/PackageVersion"), HideLabel, Button(Icon = SdfIconType.Dash)]
2025-03-31 11:16:52 +08:00
[HideIf("environmentType", EnvironmentType.Debug)]
public void SubBigVersion()
{
if (VersionType == VersionPosType.X)
{
packageVersionX--;
2025-04-27 10:22:16 +08:00
if (packageVersionZ > 0)
packageVersionZ = 0;
2025-03-31 11:16:52 +08:00
}
else if (VersionType == VersionPosType.Y)
{
packageVersionY--;
2025-04-27 10:22:16 +08:00
if (packageVersionZ > 0)
packageVersionZ = 0;
2026-01-05 17:58:53 +08:00
}
else if (VersionType == VersionPosType.Z)
2025-04-27 10:22:16 +08:00
{
packageVersionZ--;
if (packageVersionZ < 0)
packageVersionZ = 0;
2025-03-31 11:16:52 +08:00
}
2026-01-05 17:58:53 +08:00
2025-03-31 11:16:52 +08:00
GetPackageVersion();
}
2026-01-05 17:58:53 +08:00
2025-04-27 10:22:16 +08:00
[Title("重置版本", titleAlignment: TitleAlignments.Centered)]
[HorizontalGroup("BuildSetting/PackageVersion"), HideLabel, Button(Icon = SdfIconType.ArrowRepeat)]
2025-03-31 11:16:52 +08:00
[HideIf("environmentType", EnvironmentType.Debug)]
public void RepeatVersion()
{
packageVersionX = oldVersionX;
packageVersionY = oldVersionY;
packageVersionZ = oldVersionZ;
GetPackageVersion();
}
2026-01-05 17:58:53 +08:00
[HideLabel] public AbstractBuildPipelineViewer viewer;
2025-03-31 11:16:52 +08:00
2026-01-05 17:58:53 +08:00
//[HideLabel] private Dictionary<BuildPipelineType, AbstractBuildPipelineViewer> _viewers;
2025-03-31 11:16:52 +08:00
public void SetEnvironmentType()
{
GetPackageVersion();
}
public string GetBuildPackageVersion(bool isUpdate = false)
{
2025-06-12 12:03:00 +08:00
string version = "";
2025-03-31 11:16:52 +08:00
if (environmentType == EnvironmentType.Debug)
{
2025-06-12 12:03:00 +08:00
EditorUtility.SetDirty(this);
AssetDatabase.SaveAssets();
2026-01-05 17:58:53 +08:00
version = "Simulate";
2025-03-31 11:16:52 +08:00
}
if (environmentType == EnvironmentType.Release)
{
2026-01-05 17:58:53 +08:00
version =
2025-03-31 11:16:52 +08:00
$"{packageVersionX}.{packageVersionY}.{packageVersionZ}";
if (isUpdate)
packageVersionZ++;
packageVersion = $"{packageVersionX}.{packageVersionY}.{packageVersionZ}";
}
2026-01-05 17:58:53 +08:00
//BuildPipelineViewer();
2025-06-12 12:03:00 +08:00
EditorUtility.SetDirty(this);
AssetDatabase.SaveAssets();
return version;
2025-03-31 11:16:52 +08:00
}
public void GetPackageVersion()
{
if (environmentType == EnvironmentType.Debug)
{
viewer.clearBuildCacheToggle = true;
2026-01-05 17:58:53 +08:00
//selectedBuildPipelines = BuildPipelineType.EditorSimulateBuildPipeline;
2025-03-31 11:16:52 +08:00
packageVersion = "Simulate";
}
else if (environmentType == EnvironmentType.Release)
{
viewer.clearBuildCacheToggle = false;
2026-01-05 17:58:53 +08:00
//selectedBuildPipelines = BuildPipelineType.ScriptableBuildPipeline;
2025-03-31 11:16:52 +08:00
packageVersionX = packageVersionX > 1 ? packageVersionX : 1;
packageVersionY =
packageVersionY > 0 ? packageVersionY : 0;
packageVersion =
$"{packageVersionX}.{packageVersionY}.{packageVersionZ}";
}
2025-04-27 10:22:16 +08:00
SetBuildPipelines();
2025-03-31 11:16:52 +08:00
viewer.SetBuildCacheToggle();
2025-04-22 10:39:02 +08:00
EditorUtility.SetDirty(this);
2025-03-31 11:16:52 +08:00
AssetDatabase.SaveAssets();
//BuildServerPath();
}
/// <summary>
/// 设置当前构建管线
/// </summary>
/// <returns></returns>
2026-01-05 17:58:53 +08:00
public void SetBuildPipelines()
2025-03-31 11:16:52 +08:00
{
2026-01-05 17:58:53 +08:00
if (packageName.IsNullOrEmpty())
2025-03-31 11:16:52 +08:00
{
2026-01-05 17:58:53 +08:00
packageName = BuildAssetWindow.GetBuildPackageName();
2025-03-31 11:16:52 +08:00
}
2026-01-05 17:58:53 +08:00
// BuildPipelineViewer();
if (viewer != null)
viewer.SetBuildPackageData(packageName, selectedBuildPipelines.ToString(), packageVersion);
2025-03-31 11:16:52 +08:00
else
{
2026-01-05 17:58:53 +08:00
Debug.LogError($"UnityEvo:BuildPipelineViewer 为空!");
2025-03-31 11:16:52 +08:00
}
}
2026-01-05 17:58:53 +08:00
/// <summary>
/// 获取当前构建管线名称
/// </summary>
/// <returns></returns>
public BuildPipelineType GetBuildPipelinesName()
{
return selectedBuildPipelines;
}
// /// <summary>
// /// 生成打包实例
// /// </summary>
// public void BuildPipelineViewer()
// {
// if (_viewers == null)
// _viewers = new Dictionary<BuildPipelineType, AbstractBuildPipelineViewer>();
// if (_viewers.ContainsKey(selectedBuildPipelines))
// {
// viewer = _viewers[selectedBuildPipelines];
// viewer.SetBuildPackageData(packageName, selectedBuildPipelines.ToString(), packageVersion);
// }
// else
// {
// switch (selectedBuildPipelines)
// {
// case BuildPipelineType.EditorSimulateBuildPipeline:
// viewer = new SimulateBuildPipelineViewer(packageName, selectedBuildPipelines.ToString(), packageVersion);
// break;
// case BuildPipelineType.ScriptableBuildPipeline:
// viewer = new ScriptableBuildPipelineViewer(packageName, selectedBuildPipelines.ToString(), packageVersion);
// break;
// case BuildPipelineType.RawFileBuildPipeline:
// viewer = new RawfileBuildpipelineViewer(packageName, selectedBuildPipelines.ToString(), packageVersion);
// break;
// }
//
// _viewers.Add(selectedBuildPipelines, viewer);
// }
// }
2025-03-31 11:16:52 +08:00
}
public enum VersionPosType
{
X,
Y,
2025-04-27 10:22:16 +08:00
Z,
2025-03-31 11:16:52 +08:00
}
public enum EnvironmentType
{
Debug,
Release,
}
}