257 lines
8.8 KiB
C#
257 lines
8.8 KiB
C#
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")]
|
|
public class BuildAssetDataSetting : SerializedScriptableObject
|
|
{
|
|
public void OnEnable()
|
|
{
|
|
viewer = new MixedBuildPipelineViewer(packageName, selectedBuildPipelines.ToString(),
|
|
packageVersion);
|
|
oldVersionX = packageVersionX;
|
|
oldVersionY = packageVersionY;
|
|
oldVersionZ = packageVersionZ;
|
|
|
|
}
|
|
|
|
[HideInInspector] public string packageName;
|
|
[HideInInspector] public int packageVersionX = 1;
|
|
[HideInInspector] public int packageVersionY;
|
|
[HideInInspector] public int packageVersionZ;
|
|
private int oldVersionX = 1;
|
|
private int oldVersionY;
|
|
private int oldVersionZ;
|
|
|
|
[Title("目标环境", titleAlignment: TitleAlignments.Centered)]
|
|
[HorizontalGroup("BuildSetting"), HideLabel]
|
|
[OnValueChanged("SetEnvironmentType")]
|
|
public EnvironmentType environmentType;
|
|
|
|
// [Title("构建列表", titleAlignment: TitleAlignments.Centered)]
|
|
// [HorizontalGroup("BuildSetting"), HideLabel]
|
|
// [OnValueChanged("SetBuildPipelines")]
|
|
private BuildPipelineType selectedBuildPipelines = BuildPipelineType.ScriptableBuildPipeline;
|
|
|
|
private const string VerSersionMessage = "(小版本由打包叠加,中版本、大版本更新会重置小版本,如误操作,点击重置按钮即可)";
|
|
|
|
[Title("版本号", titleAlignment: TitleAlignments.Centered)]
|
|
[ReadOnly]
|
|
[HorizontalGroup("BuildSetting/PackageVersion"), HideLabel]
|
|
public string packageVersion;
|
|
|
|
[Title("版本设置切换", titleAlignment: TitleAlignments.Centered)]
|
|
[HorizontalGroup("BuildSetting/PackageVersion"), HideLabel, EnumToggleButtons]
|
|
[HideIf("environmentType", EnvironmentType.Debug)]
|
|
public VersionPosType VersionType;
|
|
|
|
|
|
[Title("升级版本", titleAlignment: TitleAlignments.Centered)]
|
|
[HorizontalGroup("BuildSetting/PackageVersion"), HideLabel, Button(Icon = SdfIconType.Plus)]
|
|
[HideIf("environmentType", EnvironmentType.Debug)]
|
|
public void AddBigVersion()
|
|
{
|
|
if (VersionType == VersionPosType.X)
|
|
{
|
|
packageVersionX++;
|
|
if (packageVersionZ > 0)
|
|
packageVersionZ = 0;
|
|
}
|
|
else if (VersionType == VersionPosType.Y)
|
|
{
|
|
packageVersionY++;
|
|
if (packageVersionZ > 0)
|
|
packageVersionZ = 0;
|
|
}
|
|
else if (VersionType == VersionPosType.Z)
|
|
{
|
|
packageVersionZ++;
|
|
}
|
|
|
|
GetPackageVersion();
|
|
}
|
|
|
|
[Title("降低版本", titleAlignment: TitleAlignments.Centered)]
|
|
[HorizontalGroup("BuildSetting/PackageVersion"), HideLabel, Button(Icon = SdfIconType.Dash)]
|
|
[HideIf("environmentType", EnvironmentType.Debug)]
|
|
public void SubBigVersion()
|
|
{
|
|
if (VersionType == VersionPosType.X)
|
|
{
|
|
packageVersionX--;
|
|
if (packageVersionZ > 0)
|
|
packageVersionZ = 0;
|
|
}
|
|
else if (VersionType == VersionPosType.Y)
|
|
{
|
|
packageVersionY--;
|
|
if (packageVersionZ > 0)
|
|
packageVersionZ = 0;
|
|
}
|
|
else if (VersionType == VersionPosType.Z)
|
|
{
|
|
packageVersionZ--;
|
|
if (packageVersionZ < 0)
|
|
packageVersionZ = 0;
|
|
}
|
|
|
|
|
|
GetPackageVersion();
|
|
}
|
|
|
|
[Title("重置版本", titleAlignment: TitleAlignments.Centered)]
|
|
[HorizontalGroup("BuildSetting/PackageVersion"), HideLabel, Button(Icon = SdfIconType.ArrowRepeat)]
|
|
[HideIf("environmentType", EnvironmentType.Debug)]
|
|
public void RepeatVersion()
|
|
{
|
|
packageVersionX = oldVersionX;
|
|
packageVersionY = oldVersionY;
|
|
packageVersionZ = oldVersionZ;
|
|
GetPackageVersion();
|
|
}
|
|
|
|
[HideLabel] public AbstractBuildPipelineViewer viewer;
|
|
|
|
//[HideLabel] private Dictionary<BuildPipelineType, AbstractBuildPipelineViewer> _viewers;
|
|
|
|
public void SetEnvironmentType()
|
|
{
|
|
GetPackageVersion();
|
|
}
|
|
|
|
public string GetBuildPackageVersion(bool isUpdate = false)
|
|
{
|
|
string version = "";
|
|
if (environmentType == EnvironmentType.Debug)
|
|
{
|
|
EditorUtility.SetDirty(this);
|
|
AssetDatabase.SaveAssets();
|
|
version = "Simulate";
|
|
}
|
|
|
|
if (environmentType == EnvironmentType.Release)
|
|
{
|
|
version =
|
|
$"{packageVersionX}.{packageVersionY}.{packageVersionZ}";
|
|
|
|
if (isUpdate)
|
|
packageVersionZ++;
|
|
|
|
packageVersion = $"{packageVersionX}.{packageVersionY}.{packageVersionZ}";
|
|
}
|
|
|
|
//BuildPipelineViewer();
|
|
EditorUtility.SetDirty(this);
|
|
AssetDatabase.SaveAssets();
|
|
return version;
|
|
}
|
|
|
|
public void GetPackageVersion()
|
|
{
|
|
if (environmentType == EnvironmentType.Debug)
|
|
{
|
|
viewer.clearBuildCacheToggle = true;
|
|
//selectedBuildPipelines = BuildPipelineType.EditorSimulateBuildPipeline;
|
|
packageVersion = "Simulate";
|
|
}
|
|
else if (environmentType == EnvironmentType.Release)
|
|
{
|
|
viewer.clearBuildCacheToggle = false;
|
|
//selectedBuildPipelines = BuildPipelineType.ScriptableBuildPipeline;
|
|
|
|
packageVersionX = packageVersionX > 1 ? packageVersionX : 1;
|
|
packageVersionY =
|
|
packageVersionY > 0 ? packageVersionY : 0;
|
|
|
|
packageVersion =
|
|
$"{packageVersionX}.{packageVersionY}.{packageVersionZ}";
|
|
}
|
|
|
|
SetBuildPipelines();
|
|
viewer.SetBuildCacheToggle();
|
|
EditorUtility.SetDirty(this);
|
|
AssetDatabase.SaveAssets();
|
|
//BuildServerPath();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 设置当前构建管线
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public void SetBuildPipelines()
|
|
{
|
|
if (packageName.IsNullOrEmpty())
|
|
{
|
|
packageName = BuildAssetWindow.GetBuildPackageName();
|
|
}
|
|
|
|
// BuildPipelineViewer();
|
|
|
|
|
|
if (viewer != null)
|
|
viewer.SetBuildPackageData(packageName, selectedBuildPipelines.ToString(), packageVersion);
|
|
else
|
|
{
|
|
Debug.LogError($"UnityEvo:BuildPipelineViewer 为空!");
|
|
}
|
|
}
|
|
|
|
/// <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);
|
|
// }
|
|
// }
|
|
}
|
|
|
|
public enum VersionPosType
|
|
{
|
|
X,
|
|
Y,
|
|
Z,
|
|
}
|
|
|
|
public enum EnvironmentType
|
|
{
|
|
Debug,
|
|
Release,
|
|
}
|
|
} |