【m】框架大更新
This commit is contained in:
@@ -0,0 +1,238 @@
|
||||
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()
|
||||
{
|
||||
BuildPipelineViewer();
|
||||
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")]
|
||||
public EBuildPipeline selectedBuildPipelines;
|
||||
|
||||
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<EBuildPipeline, 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()
|
||||
{
|
||||
SetBuildPipelines();
|
||||
if (environmentType == EnvironmentType.Debug)
|
||||
{
|
||||
viewer.clearBuildCacheToggle = true;
|
||||
selectedBuildPipelines = EBuildPipeline.EditorSimulateBuildPipeline;
|
||||
packageVersion = "Simulate";
|
||||
|
||||
}
|
||||
else if (environmentType == EnvironmentType.Release)
|
||||
{
|
||||
viewer.clearBuildCacheToggle = false;
|
||||
selectedBuildPipelines = EBuildPipeline.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>
|
||||
private void SetBuildPipelines()
|
||||
{
|
||||
BuildPipelineViewer();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 生成打包实例
|
||||
/// </summary>
|
||||
public void BuildPipelineViewer()
|
||||
{
|
||||
if (_viewers == null)
|
||||
_viewers = new Dictionary<EBuildPipeline, AbstractBuildPipelineViewer>();
|
||||
if (_viewers.ContainsKey(selectedBuildPipelines))
|
||||
{
|
||||
viewer = _viewers[selectedBuildPipelines];
|
||||
viewer.SetBuildPackageData(packageName, selectedBuildPipelines.ToString(), packageVersion);
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (selectedBuildPipelines)
|
||||
{
|
||||
case EBuildPipeline.EditorSimulateBuildPipeline:
|
||||
viewer = new SimulateBuildPipelineViewer(packageName, selectedBuildPipelines.ToString(), packageVersion);
|
||||
break;
|
||||
case EBuildPipeline.BuiltinBuildPipeline:
|
||||
viewer = new BuiltinBuildPipelineViewer(packageName, selectedBuildPipelines.ToString(), packageVersion);
|
||||
break;
|
||||
case EBuildPipeline.ScriptableBuildPipeline:
|
||||
viewer = new ScriptableBuildPipelineViewer(packageName, selectedBuildPipelines.ToString(), packageVersion);
|
||||
break;
|
||||
case EBuildPipeline.RawFileBuildPipeline:
|
||||
viewer = new RawfileBuildpipelineViewer(packageName, selectedBuildPipelines.ToString(), packageVersion);
|
||||
break;
|
||||
}
|
||||
|
||||
_viewers.Add(selectedBuildPipelines, viewer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public enum VersionPosType
|
||||
{
|
||||
X,
|
||||
Y,
|
||||
Z,
|
||||
}
|
||||
|
||||
public enum EnvironmentType
|
||||
{
|
||||
Debug,
|
||||
Release,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user