111
This commit is contained in:
3
Assets/00.StaryEvo/Editor/ArtBuild.meta
Normal file
3
Assets/00.StaryEvo/Editor/ArtBuild.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f227eb3ecaea4ee9a398278ff8da4092
|
||||
timeCreated: 1761189727
|
||||
580
Assets/00.StaryEvo/Editor/ArtBuild/BuildArtAssetWindow.cs
Normal file
580
Assets/00.StaryEvo/Editor/ArtBuild/BuildArtAssetWindow.cs
Normal file
@@ -0,0 +1,580 @@
|
||||
/****************************************************
|
||||
文件:BuildAssetWindow.cs
|
||||
作者:xosmo_
|
||||
邮箱:
|
||||
日期:2025/3/10 10:43:20
|
||||
功能:
|
||||
*****************************************************/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.IO.Compression;
|
||||
using System.Threading.Tasks;
|
||||
#if HotUpdate
|
||||
using HybridCLR.Editor;
|
||||
using HybridCLR.Editor.Commands;
|
||||
#endif
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Sirenix.OdinInspector;
|
||||
using Sirenix.OdinInspector.Editor;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using YooAsset;
|
||||
using YooAsset.Editor;
|
||||
|
||||
namespace Stary.Evo.Editor
|
||||
{
|
||||
public class BuildAssetWindow : OdinEditorWindow
|
||||
{
|
||||
public static OdinEditorWindow window;
|
||||
private HotfixMainResDomain hotfixMainResDomain;
|
||||
|
||||
[MenuItem("Evo/Art资源打包工具")]
|
||||
static void ShowWindows()
|
||||
{
|
||||
|
||||
if (CreatAssetWindow.GetCreatDomainAll().Count <= 0)
|
||||
{
|
||||
EditorUtility.DisplayDialog("提示", "不存在Domain元素,无法打开此面板,请先创建Domain元素", "确定");
|
||||
return;
|
||||
}
|
||||
|
||||
window = (BuildAssetWindow)EditorWindow.GetWindow(typeof(BuildAssetWindow));
|
||||
window.Show();
|
||||
}
|
||||
|
||||
protected override void OnDisable()
|
||||
{
|
||||
base.OnDisable();
|
||||
EditorUtility.ClearProgressBar();
|
||||
}
|
||||
|
||||
protected override async void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
GetBuildPackageNames();
|
||||
//初始化读取资源配置表
|
||||
hotfixMainResDomain = Resources.Load<HotfixMainResDomain>("HotfixMainResDomain");
|
||||
if (hotfixMainResDomain == null)
|
||||
{
|
||||
Debug.LogError($"UnityEvo:读取资源配置表失败【HotfixMainResDomain】...表在Resources下不存在,请创建");
|
||||
}
|
||||
else
|
||||
{
|
||||
ip = hotfixMainResDomain.hotfixMainResDomainEntity.ipconfig;
|
||||
EditorPrefs.SetString("ip",ip);
|
||||
userName = hotfixMainResDomain.hotfixMainResDomainEntity.username;
|
||||
password = hotfixMainResDomain.hotfixMainResDomainEntity.password;
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(ip))
|
||||
{
|
||||
buildAssetType = BuildAssetType.Login;
|
||||
return;
|
||||
}
|
||||
|
||||
bool isValidateToken = await WebRequestSystem.GetValidateToken(ip + "/Authentication/validateToken");
|
||||
if (isValidateToken)
|
||||
{
|
||||
buildAssetType = BuildAssetType.Build;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
buildAssetType = BuildAssetType.Login;
|
||||
}
|
||||
|
||||
public static void RemoveBuildAssetWindow()
|
||||
{
|
||||
if (window != null)
|
||||
window.Close();
|
||||
}
|
||||
|
||||
[EnumToggleButtons, HideLabel] public BuildAssetType buildAssetType;
|
||||
|
||||
#region BuildAssetLogin
|
||||
|
||||
[ShowIf("@ buildAssetType== BuildAssetType.Login")]
|
||||
[BoxGroup("Login", showLabel: false)]
|
||||
[OnValueChanged("SetWebRequestInfo")]
|
||||
public string ip, userName, password;
|
||||
|
||||
[ShowIf("@ buildAssetType== BuildAssetType.Login")]
|
||||
[BoxGroup("Login", showLabel: false)]
|
||||
[Button("登录", ButtonSizes.Large)]
|
||||
[InfoBox("@ message", InfoMessageType.Info)]
|
||||
public async void LoginButton()
|
||||
{
|
||||
string url = ip + "/Authentication/login";
|
||||
EditorUtility.DisplayProgressBar("提示", $"登陆中~", 0f);
|
||||
bool islogin = await WebRequestSystem.Login(url, userName, password);
|
||||
float progress = 0f;
|
||||
while (progress >= 1f)
|
||||
{
|
||||
progress += 0.1f;
|
||||
EditorUtility.DisplayProgressBar("提示", $"登陆中~", progress);
|
||||
await Task.Delay(TimeSpan.FromSeconds(0.2f));
|
||||
}
|
||||
|
||||
EditorUtility.ClearProgressBar();
|
||||
UpdateMessage(islogin);
|
||||
}
|
||||
|
||||
private void SetWebRequestInfo()
|
||||
{
|
||||
if (hotfixMainResDomain != null)
|
||||
{
|
||||
hotfixMainResDomain.hotfixMainResDomainEntity.ipconfig = ip;
|
||||
hotfixMainResDomain.hotfixMainResDomainEntity.username = userName;
|
||||
hotfixMainResDomain.hotfixMainResDomainEntity.password = password;
|
||||
EditorPrefs.SetString("ip",ip);
|
||||
EditorUtility.SetDirty(hotfixMainResDomain);
|
||||
AssetDatabase.SaveAssets();
|
||||
}
|
||||
}
|
||||
|
||||
private string message;
|
||||
|
||||
public void UpdateMessage(bool islogin)
|
||||
{
|
||||
message = "当前登录状态为:" + islogin;
|
||||
if (islogin)
|
||||
{
|
||||
buildAssetType = BuildAssetType.Build;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
protected void OnSelectionChange()
|
||||
{
|
||||
EditorUtility.SetDirty(BuildAssetDataSetting);
|
||||
AssetDatabase.SaveAssets();
|
||||
//AssetDatabase.Refresh();
|
||||
}
|
||||
|
||||
[BoxGroup("Build", showLabel: false)]
|
||||
[ShowIf("@ buildAssetType== BuildAssetType.Build")]
|
||||
[Title("包裹列表", titleAlignment: TitleAlignments.Centered)]
|
||||
[HorizontalGroup("Build/BuildPipeline"), HideLabel]
|
||||
[ValueDropdown("GetBuildPackageNames")]
|
||||
[OnValueChanged("SetBuildPackageNames")]
|
||||
public string selectedPackageNames;
|
||||
|
||||
[BoxGroup("Build", showLabel: false)]
|
||||
[ShowIf("@ buildAssetType== BuildAssetType.Build")]
|
||||
[Title("当前打包平台", titleAlignment: TitleAlignments.Centered)]
|
||||
[ReadOnly]
|
||||
[HorizontalGroup("Build/BuildPipeline"), HideLabel]
|
||||
public string buildTarget;
|
||||
|
||||
public static string packageName;
|
||||
|
||||
#region HyBridCLRBuild
|
||||
|
||||
[BoxGroup("Build", showLabel: false)]
|
||||
[HideIf("@ buildAssetType!= BuildAssetType.Build")]
|
||||
[Title("打包dll(子包仅打一次)", titleAlignment: TitleAlignments.Centered)]
|
||||
[HorizontalGroup("Build/HyBridClrBuildEntity"), HideLabel]
|
||||
public BuildAssetEntity hyBridClrBuildEntity =
|
||||
new BuildAssetEntity("HyBridCLRBuild", "DllBuildTarget", () =>
|
||||
{
|
||||
#if HotUpdate
|
||||
//PrebuildCommand.GenerateAll();
|
||||
CompileDllCommand.CompileDllActiveBuildTarget();
|
||||
#endif
|
||||
});
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region MarkAsset
|
||||
|
||||
[BoxGroup("Build", showLabel: false)]
|
||||
[ShowIf("@ buildAssetType== BuildAssetType.Build")]
|
||||
[Title("标记资源", titleAlignment: TitleAlignments.Centered)]
|
||||
[HorizontalGroup("Build/HyBridClrBuildEntity"), HideLabel]
|
||||
public BuildAssetEntity markAssetEntity =
|
||||
new BuildAssetEntity("MarkAsset", "MarkAsset", MarkAdressable.AddMark);
|
||||
|
||||
#endregion
|
||||
|
||||
#region BuildAsset
|
||||
|
||||
[BoxGroup("Build", showLabel: false)]
|
||||
[ShowIf("@ buildAssetType== BuildAssetType.Build")]
|
||||
[InlineEditor(InlineEditorObjectFieldModes.CompletelyHidden)]
|
||||
[HideLabel]
|
||||
public BuildAssetDataSetting BuildAssetDataSetting;
|
||||
|
||||
/// <summary>
|
||||
/// 检测当前所有包裹
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private List<string> GetBuildPackageNames()
|
||||
{
|
||||
List<string> result = new List<string>();
|
||||
foreach (var name in CreatAssetWindow.GetCreatDomainAllName())
|
||||
{
|
||||
result.Add(name);
|
||||
}
|
||||
|
||||
if (selectedPackageNames.IsNullOrEmpty())
|
||||
{
|
||||
// string buildPackageName = DataSetting.packageName;
|
||||
// if (result.Exists(p => p == buildPackageName))
|
||||
// {
|
||||
// selectedPackageNames = buildPackageName;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
selectedPackageNames = result[0];
|
||||
//}
|
||||
}
|
||||
|
||||
SetBuildPackageNames();
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置当前包裹
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private void SetBuildPackageNames()
|
||||
{
|
||||
//PlayerPrefs.SetString("BuildPackageNames", selectedPackageNames);
|
||||
// DataSetting.packageName = selectedPackageNames;
|
||||
|
||||
|
||||
// DataSetting = Resources.Load<BuildAssetDataSetting>("BuildAssetDataSetting");
|
||||
string buildAssetDataSettingPath =
|
||||
$"Assets/Domain/{selectedPackageNames}/Conf/BuildAssetDataSetting.asset";
|
||||
BuildAssetDataSetting buildAssetDataSetting =
|
||||
AssetDatabase.LoadAssetAtPath<BuildAssetDataSetting>(buildAssetDataSettingPath);
|
||||
if (buildAssetDataSetting != null)
|
||||
{
|
||||
BuildAssetDataSetting = buildAssetDataSetting;
|
||||
Init();
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError($"UnityEvo:BuildAssetDataSetting 不存在,请检查路径{buildAssetDataSettingPath}");
|
||||
}
|
||||
|
||||
if (selectedPackageNames != packageName)
|
||||
{
|
||||
GetHostBuildPackageVersion(buildAssetDataSetting);
|
||||
}
|
||||
|
||||
packageName = selectedPackageNames;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取当前包裹
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static string GetBuildPackageName()
|
||||
{
|
||||
return packageName;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Update
|
||||
|
||||
[BoxGroup("Build", showLabel: false)]
|
||||
[ShowIf("@ buildAssetType== BuildAssetType.Build")]
|
||||
[Title("打包本地资源", titleAlignment: TitleAlignments.Centered)]
|
||||
[HideLabel]
|
||||
public BuildAssetEntity onBuildPipelineEntity;
|
||||
|
||||
[BoxGroup("Build", showLabel: false)]
|
||||
[Title("上传资源", titleAlignment: TitleAlignments.Centered)]
|
||||
[HideLabel]
|
||||
[ShowIf(
|
||||
"@ BuildAssetDataSetting.environmentType== EnvironmentType.Release && buildAssetType== BuildAssetType.Build")]
|
||||
public BuildAssetEntity onUpdateBuildPipelineEntity;
|
||||
|
||||
|
||||
private void OnBuildPipeline()
|
||||
{
|
||||
if (EditorUtility.DisplayDialog("提示", $"开始构建资源包[{selectedPackageNames}]!", "Yes", "No"))
|
||||
{
|
||||
EditorTools.ClearUnityConsole();
|
||||
EditorApplication.delayCall += BuildAssetDataSetting.viewer.ExecuteBuild;
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning("[Build] 打包已经取消");
|
||||
}
|
||||
}
|
||||
|
||||
private async void OnUpdateBuildPipeline()
|
||||
{
|
||||
if (EditorUtility.DisplayDialog("提示", $"开始上传至服务器[{selectedPackageNames}]!", "Yes", "No"))
|
||||
{
|
||||
// 新增:打包为zip的逻辑
|
||||
string zipFilePath = BuildZip(BuildAssetDataSetting);
|
||||
await UpdateFileDataResDomain(BuildAssetDataSetting, zipFilePath);
|
||||
await Task.Delay(1000);
|
||||
EditorUtility.ClearProgressBar();
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorUtility.ClearProgressBar();
|
||||
EditorUtility.DisplayDialog("提示", "Update] 上传已经取消", "确定");
|
||||
Debug.LogWarning("[Update] 上传已经取消");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static string BuildZip(BuildAssetDataSetting setting)
|
||||
{
|
||||
EditorUtility.DisplayProgressBar("提示", $"开始上传{setting.packageName}(打包zip)", 0.0f);
|
||||
// 新增:打包为zip的逻辑
|
||||
string zipFileName =
|
||||
$"{setting.packageName}_{setting.packageVersion}.zip";
|
||||
//原yooAsset目录
|
||||
var outputPackageDirectory =
|
||||
$"{AssetBundleBuilderHelper.GetDefaultBuildOutputRoot()}/{EditorUserBuildSettings.activeBuildTarget}/{setting.packageName}";
|
||||
|
||||
//拷贝目录
|
||||
string outFilePath = $"{outputPackageDirectory}/{setting.packageVersion}";
|
||||
|
||||
var copyPackageDirectory =
|
||||
$"{Application.streamingAssetsPath}/{YooAssetSettingsData.GetDefaultYooFolderName()}/{setting.packageName}";
|
||||
//拷贝BuildinCatalog文件
|
||||
CreateBuildinCatalogFile("BuildinCatalog.json", copyPackageDirectory, outFilePath);
|
||||
CreateBuildinCatalogFile("BuildinCatalog.bytes", copyPackageDirectory, outFilePath);
|
||||
|
||||
//输出目录
|
||||
string zipFilePath = Path.Combine(outputPackageDirectory, zipFileName);
|
||||
try
|
||||
{
|
||||
using (FileStream zipStream = new FileStream(zipFilePath, FileMode.Create))
|
||||
using (ZipArchive archive = new ZipArchive(zipStream, ZipArchiveMode.Create))
|
||||
{
|
||||
// 指定需要压缩的后缀(例如:只压缩.json和.dll文件)
|
||||
//string[] targetExtensions = { ".bundle" };
|
||||
|
||||
// 遍历目录下所有文件
|
||||
// foreach (string filePath in Directory.GetFiles(outFilePath, "*.*", SearchOption.AllDirectories)
|
||||
// .Where(f => targetExtensions.Contains(Path.GetExtension(f),
|
||||
// StringComparer.OrdinalIgnoreCase)))
|
||||
foreach (string filePath in Directory.GetFiles(outFilePath, "*.*", SearchOption.AllDirectories))
|
||||
{
|
||||
// 获取文件在压缩包中的相对路径
|
||||
string entryName = Path.GetRelativePath(outFilePath, filePath);
|
||||
|
||||
// 创建zip条目
|
||||
ZipArchiveEntry entry = archive.CreateEntry(entryName,
|
||||
System.IO.Compression.CompressionLevel.Optimal);
|
||||
|
||||
// 写入文件内容
|
||||
using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
|
||||
using (Stream entryStream = entry.Open())
|
||||
{
|
||||
fileStream.CopyTo(entryStream);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Debug.Log($"成功打包为zip:{zipFilePath}");
|
||||
EditorUtility.DisplayProgressBar("提示", $"开始上传{setting.packageName}(打包zip)", 0.25f);
|
||||
return zipFilePath;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.LogError($"打包zip失败:{ex.Message}");
|
||||
EditorUtility.ClearProgressBar();
|
||||
return default;
|
||||
}
|
||||
}
|
||||
|
||||
private static void CreateBuildinCatalogFile(string fileName, string copyPackageDirectory, string outFilePath)
|
||||
{
|
||||
// 假设 BuildinCatalog 文件名为 BuildinCatalog.json
|
||||
|
||||
string sourcePath = Path.Combine(copyPackageDirectory, fileName); // 源文件路径
|
||||
string destinationPath = Path.Combine(outFilePath, fileName); // 目标文件路径
|
||||
|
||||
// 如果目标文件已存在,则覆盖
|
||||
if (File.Exists(destinationPath))
|
||||
{
|
||||
File.Delete(destinationPath);
|
||||
}
|
||||
|
||||
// 执行拷贝操作
|
||||
File.Copy(sourcePath, destinationPath);
|
||||
|
||||
}
|
||||
|
||||
public static async Task UpdateFileDataResDomain(BuildAssetDataSetting setting, string zipFilePath)
|
||||
{
|
||||
//初始化读取资源配置表
|
||||
HotfixMainResDomain hotfixMainResDomain = Resources.Load<HotfixMainResDomain>("HotfixMainResDomain");
|
||||
if (hotfixMainResDomain == null)
|
||||
{
|
||||
Debug.LogError($"UnityEvo:读取资源配置表失败【HotfixMainResDomain】...表不存在");
|
||||
return;
|
||||
}
|
||||
|
||||
var ip = hotfixMainResDomain.hotfixMainResDomainEntity.ipconfig;
|
||||
var messageEntity = await WebRequestSystem.PostFile(ip + "/FileLoad/UpLoadFile", new[] { zipFilePath });
|
||||
EditorUtility.DisplayProgressBar("提示", $"开始上传{setting.packageName}(上传zip文件)", 0.5f);
|
||||
if (messageEntity.code == 200)
|
||||
{
|
||||
List<ResultMessageEntity> resultMessageEntities =
|
||||
JsonConvert.DeserializeObject<List<ResultMessageEntity>>(messageEntity.data.ToString());
|
||||
if (resultMessageEntities.Count > 0)
|
||||
{
|
||||
EditorUtility.DisplayProgressBar("提示", "开始上传(更新数据库)", 0.75f);
|
||||
foreach (var resultMessageEntity in resultMessageEntities)
|
||||
{
|
||||
var data = JsonConvert.DeserializeObject(resultMessageEntity.data.ToString()) as JObject;
|
||||
string fileId = data["id"].ToString();
|
||||
ResDmainAddRequst resDmainAddRequst = new ResDmainAddRequst()
|
||||
{
|
||||
ProductName = Application.identifier,
|
||||
DomainName = setting.packageName,
|
||||
Platform = EditorUserBuildSettings.activeBuildTarget.ToString(),
|
||||
PackageVersion = setting.packageVersion,
|
||||
DocumentFileId = fileId
|
||||
};
|
||||
var resResultMessage = await WebRequestSystem.Post(ip + "/ResDomain/AddResDomain",
|
||||
JsonConvert.SerializeObject(resDmainAddRequst));
|
||||
//如果低于服务器版本,更新版本号
|
||||
if (resResultMessage.code == 1009)
|
||||
{
|
||||
ResDmainVersionResponse dmainVersionResponse =
|
||||
JsonConvert.DeserializeObject<ResDmainVersionResponse>(resResultMessage.data
|
||||
.ToString());
|
||||
string[] versions = dmainVersionResponse.PackageVersion.Split('.');
|
||||
setting.packageVersionX = int.Parse(versions[0]);
|
||||
setting.packageVersionY = int.Parse(versions[1]);
|
||||
setting.packageVersionZ = int.Parse(versions[2]);
|
||||
EditorUtility.DisplayDialog("提示",
|
||||
$"{resResultMessage.message + $"\n{resResultMessage.data.ToString()}"}", "确定");
|
||||
}
|
||||
|
||||
setting.GetBuildPackageVersion(true);
|
||||
}
|
||||
|
||||
EditorUtility.DisplayProgressBar("提示", $"开始上传{setting.packageName}(更新数据库)", 1f);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorUtility.DisplayProgressBar("提示", $"{messageEntity.message}", 1f);
|
||||
}
|
||||
|
||||
await Task.Delay(1000);
|
||||
EditorUtility.ClearProgressBar();
|
||||
return;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取服务器上版本号
|
||||
/// </summary>
|
||||
private async void GetHostBuildPackageVersion(BuildAssetDataSetting setting)
|
||||
{
|
||||
var resDmainAddRequst = new ResDmainRequst()
|
||||
{
|
||||
ProductName = Application.identifier,
|
||||
DomainName = selectedPackageNames,
|
||||
Platform = EditorUserBuildSettings.activeBuildTarget.ToString(),
|
||||
};
|
||||
var resResultMessage = await WebRequestSystem.Post(ip + "/ResDomain/GetResDomainByDomain",
|
||||
JsonConvert.SerializeObject(resDmainAddRequst));
|
||||
//如果低于服务器版本,更新版本号
|
||||
if (resResultMessage.code != 1011)
|
||||
{
|
||||
if (resResultMessage.data != null)
|
||||
{
|
||||
ResDmainResponse domainResponse =
|
||||
JsonConvert.DeserializeObject<ResDmainResponse>(resResultMessage.data
|
||||
.ToString());
|
||||
string[] versions = domainResponse.PackageVersion.Split('.');
|
||||
setting.packageVersionX = int.Parse(versions[0]);
|
||||
setting.packageVersionY = int.Parse(versions[1]);
|
||||
setting.packageVersionZ = int.Parse(versions[2]);
|
||||
setting.GetBuildPackageVersion(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError($"UnityEvo:获取服务器版本失败,resResultMessage.data为空");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorUtility.DisplayDialog("提示",
|
||||
$"{resResultMessage.message},默认1.0.0版本 ", "确定");
|
||||
setting.packageVersionX = 1;
|
||||
setting.packageVersionY = 0;
|
||||
setting.packageVersionZ = 0;
|
||||
setting.GetBuildPackageVersion(false);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
protected void Init()
|
||||
{
|
||||
//Update
|
||||
buildTarget = EditorUserBuildSettings.activeBuildTarget.ToString();
|
||||
onBuildPipelineEntity =
|
||||
new BuildAssetEntity("打包", $"打包资源包【版本:{BuildAssetDataSetting.packageVersion}】", OnBuildPipeline);
|
||||
onUpdateBuildPipelineEntity =
|
||||
new BuildAssetEntity("更新", $"更新至服务器【版本:{BuildAssetDataSetting.packageVersion}】",
|
||||
OnUpdateBuildPipeline);
|
||||
}
|
||||
|
||||
private Vector2 scroll;
|
||||
|
||||
protected override void DrawEditor(int index)
|
||||
{
|
||||
scroll = GUILayout.BeginScrollView(scroll);
|
||||
{
|
||||
base.DrawEditor(index);
|
||||
}
|
||||
GUILayout.EndScrollView();
|
||||
|
||||
BuildServerPath();
|
||||
UpdateBuildPipelineButtonName();
|
||||
}
|
||||
|
||||
public void UpdateBuildPipelineButtonName()
|
||||
{
|
||||
onBuildPipelineEntity.SetButtonName($"打包资源包【版本:{BuildAssetDataSetting.packageVersion}】");
|
||||
onUpdateBuildPipelineEntity.SetButtonName($"更新至服务器【版本:{BuildAssetDataSetting.packageVersion}】");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 生成服务器路径
|
||||
/// </summary>
|
||||
private void BuildServerPath()
|
||||
{
|
||||
// if (!_isCheckDriveExist)
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// updateServerPath =
|
||||
// $"Z:/{Application.productName}/{BuildAssetDataSetting.packageName}/{EditorUserBuildSettings.activeBuildTarget}/{BuildAssetDataSetting.packageVersion}";
|
||||
// if (!Directory.Exists(updateServerPath))
|
||||
// Directory.CreateDirectory(updateServerPath);
|
||||
|
||||
//更新Button文字
|
||||
onBuildPipelineEntity.SetButtonName($"打包资源包【版本:{BuildAssetDataSetting.packageVersion}】");
|
||||
onUpdateBuildPipelineEntity.SetButtonName($"更新至服务器【版本:{BuildAssetDataSetting.packageVersion}】");
|
||||
}
|
||||
}
|
||||
|
||||
public enum BuildAssetType
|
||||
{
|
||||
Login,
|
||||
Build,
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: be7ec9bc4c8d40b0850b440246ea122f
|
||||
timeCreated: 1761198971
|
||||
374
Assets/00.StaryEvo/Editor/ArtBuild/CreatArtAssetWindow.cs
Normal file
374
Assets/00.StaryEvo/Editor/ArtBuild/CreatArtAssetWindow.cs
Normal file
@@ -0,0 +1,374 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
#if HotUpdate
|
||||
using HybridCLR.Editor;
|
||||
using HybridCLR.Editor.Settings;
|
||||
#endif
|
||||
using Sirenix.OdinInspector;
|
||||
using Sirenix.OdinInspector.Editor;
|
||||
using UnityEditor;
|
||||
using UnityEditorInternal;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Stary.Evo.Editor
|
||||
{
|
||||
public class CreatAssetWindow : OdinEditorWindow
|
||||
{
|
||||
[MenuItem("Evo/创建Domain作用域")]
|
||||
static void Init()
|
||||
{
|
||||
// Get existing open window or if none, make a new one:
|
||||
CreatAssetWindow window = (CreatAssetWindow)EditorWindow.GetWindow(typeof(CreatAssetWindow));
|
||||
window.Show();
|
||||
}
|
||||
|
||||
[TitleGroup("创建Domain作用域")] public string domain;
|
||||
|
||||
[TitleGroup("创建Domain作用域")]
|
||||
[Button("创建Domain", ButtonSizes.Large)]
|
||||
public async void CreatDomain()
|
||||
{
|
||||
// if (GetCreatDomainAll().Count>0)
|
||||
// {
|
||||
// EditorUtility.DisplayDialog("错误!", "Domain仅可以创建一个,请在下方删除存在的Domain", "确定");
|
||||
// return;
|
||||
// }
|
||||
|
||||
if (string.IsNullOrEmpty(domain))
|
||||
{
|
||||
EditorUtility.DisplayDialog("错误!", "请输入将要创建Domain的编号", "确定");
|
||||
return;
|
||||
}
|
||||
|
||||
string artDomainPath = $"{Application.dataPath}/Art/{domain}";
|
||||
if (!Directory.Exists(artDomainPath))
|
||||
{
|
||||
Directory.CreateDirectory(artDomainPath);
|
||||
|
||||
if (!Directory.Exists(artDomainPath))
|
||||
//创建Animation文件夹
|
||||
CreatDirectory(artDomainPath + "/Animation");
|
||||
//创建Effects文件夹
|
||||
CreatDirectory(artDomainPath + "/Effects");
|
||||
//创建Fbx文件夹
|
||||
CreatDirectory(artDomainPath + "/Fbx");
|
||||
//创建Font文件夹
|
||||
CreatDirectory(artDomainPath + "/Font");
|
||||
//创建Materials文件夹
|
||||
CreatDirectory(artDomainPath + "/Materials");
|
||||
//创建Prefabs文件夹
|
||||
CreatDirectory(artDomainPath + "/Prefabs");
|
||||
//创建Scenes文件夹
|
||||
CreatDirectory(artDomainPath + "/Scenes");
|
||||
//创建/Scenes/Test文件夹
|
||||
CreatDirectory(artDomainPath + "/Scenes/Test");
|
||||
//创建Shader文件夹
|
||||
CreatDirectory(artDomainPath + "/Shader");
|
||||
//创建Textures文件夹
|
||||
CreatDirectory(artDomainPath + "/Textures");
|
||||
File.WriteAllTextAsync(
|
||||
$"{artDomainPath}/这里放所有美术的资源,因涉及打包依赖等原因,不建议在上一层节点新增文件夹,如涉及文件夹规范等问题请@张铮.hint", "");
|
||||
}
|
||||
//创建Art 测试场景
|
||||
/* 2. 再建 Scenes/Test */
|
||||
string sceneDir = $"{artDomainPath}/Scenes/Test";
|
||||
if (!Directory.Exists(sceneDir))
|
||||
{
|
||||
Directory.CreateDirectory(sceneDir);
|
||||
/* 3. 创建新场景 */
|
||||
var newScene = UnityEditor.SceneManagement.EditorSceneManager.NewScene(
|
||||
UnityEditor.SceneManagement.NewSceneSetup.DefaultGameObjects,
|
||||
UnityEditor.SceneManagement.NewSceneMode.Single);
|
||||
|
||||
/* 4. 删除默认相机(和灯光)*/
|
||||
foreach (var go in newScene.GetRootGameObjects())
|
||||
{
|
||||
if (go.name == "Main Camera" || go.name == "Directional Light")
|
||||
GameObject.DestroyImmediate(go);
|
||||
}
|
||||
|
||||
/* 5. 载入并实例化 RKCameraRig.prefab */
|
||||
string prefabPath = "Prefabs/BaseSetting/RKCameraRig";
|
||||
|
||||
var prefab = Resources.Load<GameObject>(prefabPath);
|
||||
var spawned = (GameObject)PrefabUtility.InstantiatePrefab(prefab);
|
||||
spawned.name = "RKCameraRig";
|
||||
|
||||
/* 6. 保存场景 */
|
||||
string scenePath = Path.Combine("Assets/Art", name, "Scenes", "Test", "TestScene.unity");
|
||||
UnityEditor.SceneManagement.EditorSceneManager.SaveScene(newScene, scenePath);
|
||||
}
|
||||
|
||||
|
||||
string domainPath = $"{Application.dataPath}/Domain/{domain}";
|
||||
if (Directory.Exists(domainPath + "/AddressableRes/Config/DomainConfig.asset"))
|
||||
{
|
||||
EditorUtility.DisplayDialog("错误!", $"\"{domain}\"已经存在,无法创建", "确定");
|
||||
return;
|
||||
}
|
||||
|
||||
CreatDirectory(domainPath);
|
||||
|
||||
//程序资源存放文件夹
|
||||
string resPath = $"{domainPath}/AddressableRes";
|
||||
CreatDirectory(resPath);
|
||||
//创建音频文件夹
|
||||
CreatDirectory(resPath + "/Audios");
|
||||
//创建Config文件夹
|
||||
CreatDirectory(resPath + "/Config");
|
||||
//创建Dll文件夹
|
||||
CreatDirectory(resPath + "/Dll");
|
||||
//创建Prefabs文件夹
|
||||
CreatDirectory(resPath + "/Prefabs");
|
||||
//创建Scenes文件夹
|
||||
CreatDirectory(resPath + "/Scenes");
|
||||
//创建SpriteAtlas文件夹
|
||||
CreatDirectory(resPath + "/SpriteAtlas");
|
||||
//创建Sprites文件夹
|
||||
CreatDirectory(resPath + "/Sprites");
|
||||
//创建Video文件夹
|
||||
CreatDirectory(resPath + "/Video");
|
||||
|
||||
File.WriteAllTextAsync($"{resPath}/这里放所有参与热更的资源.hint", "");
|
||||
|
||||
//主入口预制件
|
||||
GameObject gameObj = new GameObject(domain);
|
||||
gameObj.transform.position = Vector3.zero;
|
||||
gameObj.transform.rotation = Quaternion.identity;
|
||||
gameObj.name = domain;
|
||||
|
||||
|
||||
|
||||
CreatDirectory($"{resPath}/Prefabs");
|
||||
string rootPfbFilePath = $"Assets/Domain/{domain}/AddressableRes/Prefabs/{domain}.prefab";
|
||||
var localPath = AssetDatabase.GenerateUniqueAssetPath(rootPfbFilePath);
|
||||
PrefabUtility.SaveAsPrefabAsset(gameObj, localPath);
|
||||
|
||||
//存放脚本文件夹
|
||||
string scriptsPath = $"{domainPath}/HotUpdate";
|
||||
CreatDirectory(scriptsPath);
|
||||
File.WriteAllTextAsync($"{scriptsPath}/这里放所有参与热更的脚本文件.hint", "该文件夹中的程序集定义文件,请勿删除,非常重要。");
|
||||
|
||||
//创建配置文件夹
|
||||
string confPath = $"{domainPath}/Conf";
|
||||
CreatDirectory(confPath);
|
||||
|
||||
|
||||
//程序集配置资源
|
||||
|
||||
string hotfixDomain = $"HotUpdate_{domain}";
|
||||
|
||||
string hotfixDomainAsmdef = $"{scriptsPath}/{hotfixDomain}.asmdef";
|
||||
await using (var writer = new StreamWriter(hotfixDomainAsmdef))
|
||||
{
|
||||
string body = Resources.Load<TextAsset>("AssemblyDefinitionTemplate").text;
|
||||
body = body.Replace("MODULE_IDENT", hotfixDomain);
|
||||
body = body.Replace("ROOT_NAMESPACE", hotfixDomain);
|
||||
await writer.WriteAsync(body);
|
||||
}
|
||||
|
||||
//模块化脚本生成配置
|
||||
string domainClassName = $"{domain}Domain";
|
||||
string architectureClassName = $"{domain}Architecture";
|
||||
#if HotUpdate
|
||||
//模块配置资源
|
||||
DomainConfig moduleConfig = CreateInstance<DomainConfig>();
|
||||
moduleConfig.domain = domain;
|
||||
moduleConfig.className = domainClassName;
|
||||
moduleConfig.mainPrefab = "Prefabs_" + gameObj.name;
|
||||
moduleConfig.@namespace = domain;
|
||||
AssetDatabase.CreateAsset(moduleConfig, $"Assets/Domain/{domain}/AddressableRes/Config/DomainConfig.asset");
|
||||
//
|
||||
|
||||
|
||||
//编辑器配置资源
|
||||
BuildAssetDataSetting buildAssetDataSetting = CreateInstance<BuildAssetDataSetting>();
|
||||
buildAssetDataSetting.packageName = domain;
|
||||
AssetDatabase.CreateAsset(buildAssetDataSetting,
|
||||
$"Assets/Domain/{domain}/Conf/BuildAssetDataSetting.asset");
|
||||
|
||||
AssetDatabase.Refresh();
|
||||
|
||||
|
||||
string configPath = $"Assets/Domain/{domain}/HotUpdate/{hotfixDomain}.asmdef";
|
||||
AssemblyDefinitionAsset assemblyDefinitionAsset =
|
||||
AssetDatabase.LoadAssetAtPath<AssemblyDefinitionAsset>(configPath);
|
||||
if (domain != "Main")
|
||||
{
|
||||
|
||||
// 将程序集定义添加到 HybridCLR 热更列表
|
||||
var settings = SettingsUtil.HybridCLRSettings;
|
||||
if (!settings.hotUpdateAssemblyDefinitions.Contains(assemblyDefinitionAsset))
|
||||
{
|
||||
var assemblyList = settings.hotUpdateAssemblyDefinitions.ToList();
|
||||
assemblyList.Add(assemblyDefinitionAsset);
|
||||
SettingsUtil.HybridCLRSettings.hotUpdateAssemblyDefinitions = assemblyList.ToArray();
|
||||
}
|
||||
|
||||
|
||||
List<AssemblyDefinitionAsset> assemblies = new List<AssemblyDefinitionAsset>();
|
||||
for (int i = 0; i < settings.hotUpdateAssemblyDefinitions.Length; i++)
|
||||
{
|
||||
if (settings.hotUpdateAssemblyDefinitions[i] != null)
|
||||
{
|
||||
assemblies.Add(settings.hotUpdateAssemblyDefinitions[i]);
|
||||
}
|
||||
}
|
||||
|
||||
HybridCLRSettings.Instance.hotUpdateAssemblyDefinitions = assemblies.ToArray();
|
||||
HybridCLRSettings.Save();
|
||||
|
||||
}
|
||||
#endif
|
||||
AssetDatabase.SaveAssets();
|
||||
|
||||
|
||||
string domainClassPath = $"{scriptsPath}/{domainClassName}.cs";
|
||||
//await File.WriteAllTextAsync($"{scriptsPath}/{domainClassName}.cs", domainTemplate);
|
||||
await using (var writer = new StreamWriter(domainClassPath))
|
||||
{
|
||||
string domainTemplate = Resources.Load<TextAsset>("DomainTemplate").text;
|
||||
domainTemplate = domainTemplate.Replace("ClassNameXX", domainClassName)
|
||||
.Replace("ReturnArchitecture", architectureClassName)
|
||||
.Replace("ArchitectureX", architectureClassName)
|
||||
.Replace("NamespaceX", domain)
|
||||
.Replace("DomainNameXX", domain);
|
||||
await writer.WriteAsync(domainTemplate);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[TitleGroup("预览Domain作用域")]
|
||||
[ListDrawerSettings(DraggableItems = false, ShowFoldout = false, ShowPaging = false, ShowItemCount = false,
|
||||
HideRemoveButton = true,HideAddButton = true)]
|
||||
public List<CreatDomainEntity> domainList;
|
||||
|
||||
protected override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
domainList = GetCreatDomainAll();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取全部作用域
|
||||
/// </summary>
|
||||
public static string[] GetCreatDomainAllName()
|
||||
{
|
||||
string domainPath = $"{Application.dataPath}/Domain";
|
||||
string[] domains;
|
||||
// 新增目录获取代码
|
||||
if (Directory.Exists(domainPath))
|
||||
{
|
||||
var dirInfo = new DirectoryInfo(domainPath);
|
||||
// 获取直接子目录(不递归)
|
||||
domains = dirInfo.GetDirectories("*", SearchOption.TopDirectoryOnly)
|
||||
.Select(d => d.Name)
|
||||
.ToArray();
|
||||
}
|
||||
else
|
||||
{
|
||||
domains = Array.Empty<string>();
|
||||
}
|
||||
|
||||
|
||||
return domains;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取全部作用域
|
||||
/// </summary>
|
||||
public static List<CreatDomainEntity> GetCreatDomainAll()
|
||||
{
|
||||
string domainPath = $"{Application.dataPath}/Domain";
|
||||
string[] domains;
|
||||
// 新增目录获取代码
|
||||
if (Directory.Exists(domainPath))
|
||||
{
|
||||
var dirInfo = new DirectoryInfo(domainPath);
|
||||
// 获取直接子目录(不递归)
|
||||
domains = dirInfo.GetDirectories("*", SearchOption.TopDirectoryOnly)
|
||||
.Select(d => d.Name)
|
||||
.ToArray();
|
||||
}
|
||||
else
|
||||
{
|
||||
domains = Array.Empty<string>();
|
||||
}
|
||||
|
||||
List<CreatDomainEntity> domainList = new List<CreatDomainEntity>();
|
||||
foreach (var item in domains)
|
||||
{
|
||||
if (File.Exists($"{domainPath}/{item}/AddressableRes/Config/DomainConfig.asset"))
|
||||
{
|
||||
CreatDomainEntity domainEntity = new CreatDomainEntity(domainList)
|
||||
{
|
||||
DomainName = item,
|
||||
domainPath = $"{domainPath}/{item}"
|
||||
};
|
||||
domainList.Add(domainEntity);
|
||||
}
|
||||
}
|
||||
|
||||
return domainList;
|
||||
}
|
||||
|
||||
private static void CreatDirectory(string artDomainPath)
|
||||
{
|
||||
if (!Directory.Exists(artDomainPath))
|
||||
{
|
||||
//创建Animation文件夹
|
||||
Directory.CreateDirectory(artDomainPath);
|
||||
}
|
||||
}
|
||||
|
||||
public static void CreateDomainDirectory(string domain)
|
||||
{
|
||||
string artDomainPath = $"{Application.dataPath}/Art/{domain}";
|
||||
//创建Animation文件夹
|
||||
CreatDirectory(artDomainPath + "/Animation");
|
||||
//创建Effects文件夹
|
||||
CreatDirectory(artDomainPath + "/Effects");
|
||||
//创建Fbx文件夹
|
||||
CreatDirectory(artDomainPath + "/Fbx");
|
||||
//创建Font文件夹
|
||||
CreatDirectory(artDomainPath + "/Font");
|
||||
//创建Materials文件夹
|
||||
CreatDirectory(artDomainPath + "/Materials");
|
||||
//创建Prefabs文件夹
|
||||
CreatDirectory(artDomainPath + "/Prefabs");
|
||||
//创建Scenes文件夹
|
||||
CreatDirectory(artDomainPath + "/Scenes");
|
||||
//创建/Scenes/Test文件夹
|
||||
CreatDirectory(artDomainPath + "/Scenes/Test");
|
||||
//创建Shader文件夹
|
||||
CreatDirectory(artDomainPath + "/Shader");
|
||||
//创建Textures文件夹
|
||||
CreatDirectory(artDomainPath + "/Textures");
|
||||
|
||||
string domainPath = $"{Application.dataPath}/Domain/{domain}";
|
||||
//程序资源存放文件夹
|
||||
string resPath = $"{domainPath}/AddressableRes";
|
||||
CreatDirectory(resPath);
|
||||
//创建音频文件夹
|
||||
CreatDirectory(resPath + "/Audios");
|
||||
//创建Config文件夹
|
||||
CreatDirectory(resPath + "/Config");
|
||||
//创建Dll文件夹
|
||||
CreatDirectory(resPath + "/Dll");
|
||||
//创建Prefabs文件夹
|
||||
CreatDirectory(resPath + "/Prefabs");
|
||||
//创建Scenes文件夹
|
||||
CreatDirectory(resPath + "/Scenes");
|
||||
//创建SpriteAtlas文件夹
|
||||
CreatDirectory(resPath + "/SpriteAtlas");
|
||||
//创建Sprites文件夹
|
||||
CreatDirectory(resPath + "/Sprites");
|
||||
//创建Video文件夹
|
||||
CreatDirectory(resPath + "/Video");
|
||||
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e5909a71d7434c24809d3529ded3e0a0
|
||||
timeCreated: 1761202481
|
||||
@@ -64,7 +64,8 @@ namespace Stary.Evo.Editor
|
||||
{
|
||||
if (oneKeyBUildEntity.isRaw)
|
||||
{
|
||||
MarkAdressable.CollectSVC(oneKeyBUildEntity.DomainName);
|
||||
MarkAdressable.CollectSVC(MarkAdressable.DomainRoot, oneKeyBUildEntity.DomainName,
|
||||
() => { EditorUtility.DisplayDialog("收集shader【材质异常或资源修改】", "收集成功", "确定"); });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -165,7 +166,9 @@ namespace Stary.Evo.Editor
|
||||
{
|
||||
buildAssetDataSetting.environmentType = EnvironmentType.Release;
|
||||
buildAssetDataSetting.SetEnvironmentType();
|
||||
buildAssetDataSetting.viewer = new BuiltinBuildPipelineViewer(buildAssetDataSetting);
|
||||
buildAssetDataSetting.viewer = new BuiltinBuildPipelineViewer(buildAssetDataSetting.packageName,
|
||||
buildAssetDataSetting.selectedBuildPipelines.ToString(),
|
||||
buildAssetDataSetting.packageVersion);
|
||||
buildAssetDataSetting.viewer.clearBuildCacheToggle = true;
|
||||
buildAssetDataSetting.viewer.SetBuildCacheToggle();
|
||||
EditorApplication.delayCall += buildAssetDataSetting.viewer.ExecuteBuild;
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace Stary.Evo.Editor
|
||||
{
|
||||
public static OdinEditorWindow window;
|
||||
|
||||
[MenuItem("Evo/Apk打包工具")]
|
||||
[MenuItem("Evo/Dev/Apk打包工具")]
|
||||
static void ShowWindows()
|
||||
{
|
||||
window = (BuildApkWindow)EditorWindow.GetWindow(typeof(BuildApkWindow));
|
||||
|
||||
@@ -9,7 +9,7 @@ using YooAsset.Editor;
|
||||
namespace Stary.Evo.Editor
|
||||
{
|
||||
[CreateAssetMenu(fileName = "BuildAssetDataSetting", menuName = "Evo/BuildAssetDataSetting")]
|
||||
public class BuildAssetDataSetting : SerializedScriptableObject
|
||||
public class BuildAssetDataSetting : SerializedScriptableObject
|
||||
{
|
||||
public void OnEnable()
|
||||
{
|
||||
@@ -143,6 +143,7 @@ namespace Stary.Evo.Editor
|
||||
packageVersion = $"{packageVersionX}.{packageVersionY}.{packageVersionZ}";
|
||||
|
||||
}
|
||||
BuildPipelineViewer();
|
||||
EditorUtility.SetDirty(this);
|
||||
AssetDatabase.SaveAssets();
|
||||
return version;
|
||||
@@ -197,22 +198,23 @@ namespace Stary.Evo.Editor
|
||||
if (_viewers.ContainsKey(selectedBuildPipelines))
|
||||
{
|
||||
viewer = _viewers[selectedBuildPipelines];
|
||||
viewer.SetBuildPackageData(packageName, selectedBuildPipelines.ToString(), packageVersion);
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (selectedBuildPipelines)
|
||||
{
|
||||
case EBuildPipeline.EditorSimulateBuildPipeline:
|
||||
viewer = new SimulateBuildPipelineViewer(this);
|
||||
viewer = new SimulateBuildPipelineViewer(packageName, selectedBuildPipelines.ToString(), packageVersion);
|
||||
break;
|
||||
case EBuildPipeline.BuiltinBuildPipeline:
|
||||
viewer = new BuiltinBuildPipelineViewer(this);
|
||||
viewer = new BuiltinBuildPipelineViewer(packageName, selectedBuildPipelines.ToString(), packageVersion);
|
||||
break;
|
||||
case EBuildPipeline.ScriptableBuildPipeline:
|
||||
viewer = new ScriptableBuildPipelineViewer(this);
|
||||
viewer = new ScriptableBuildPipelineViewer(packageName, selectedBuildPipelines.ToString(), packageVersion);
|
||||
break;
|
||||
case EBuildPipeline.RawFileBuildPipeline:
|
||||
viewer = new RawfileBuildpipelineViewer(this);
|
||||
viewer = new RawfileBuildpipelineViewer(packageName, selectedBuildPipelines.ToString(), packageVersion);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace Stary.Evo.Editor
|
||||
public static OdinEditorWindow window;
|
||||
private HotfixMainResDomain hotfixMainResDomain;
|
||||
|
||||
[MenuItem("Evo/资源打包工具")]
|
||||
[MenuItem("Evo/Dev/资源打包工具")]
|
||||
static void ShowWindows()
|
||||
{
|
||||
#if NotUpdate
|
||||
@@ -177,7 +177,7 @@ namespace Stary.Evo.Editor
|
||||
[HorizontalGroup("Build/BuildPipeline"), HideLabel]
|
||||
public string buildTarget;
|
||||
|
||||
public static string packageName;
|
||||
private static string packageName;
|
||||
|
||||
#region HyBridCLRBuild
|
||||
|
||||
@@ -204,7 +204,7 @@ namespace Stary.Evo.Editor
|
||||
[Title("标记资源", titleAlignment: TitleAlignments.Centered)]
|
||||
[HorizontalGroup("Build/HyBridClrBuildEntity"), HideLabel]
|
||||
public BuildAssetEntity markAssetEntity =
|
||||
new BuildAssetEntity("MarkAsset", "MarkAsset", MarkAdressable.AddMark);
|
||||
new BuildAssetEntity("MarkAsset", "MarkAsset", MarkAdressable.AddDomainMark);
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -230,7 +230,7 @@ namespace Stary.Evo.Editor
|
||||
|
||||
if (selectedPackageNames.IsNullOrEmpty())
|
||||
{
|
||||
// string buildPackageName = DataSetting.packageName;
|
||||
// string buildPackageName = packageName;
|
||||
// if (result.Exists(p => p == buildPackageName))
|
||||
// {
|
||||
// selectedPackageNames = buildPackageName;
|
||||
@@ -548,7 +548,6 @@ namespace Stary.Evo.Editor
|
||||
}
|
||||
GUILayout.EndScrollView();
|
||||
|
||||
BuildServerPath();
|
||||
UpdateBuildPipelineButtonName();
|
||||
}
|
||||
|
||||
@@ -558,30 +557,7 @@ namespace Stary.Evo.Editor
|
||||
onUpdateBuildPipelineEntity.SetButtonName($"更新至服务器【版本:{BuildAssetDataSetting.packageVersion}】");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 生成服务器路径
|
||||
/// </summary>
|
||||
private void BuildServerPath()
|
||||
{
|
||||
// if (!_isCheckDriveExist)
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// updateServerPath =
|
||||
// $"Z:/{Application.productName}/{BuildAssetDataSetting.packageName}/{EditorUserBuildSettings.activeBuildTarget}/{BuildAssetDataSetting.packageVersion}";
|
||||
// if (!Directory.Exists(updateServerPath))
|
||||
// Directory.CreateDirectory(updateServerPath);
|
||||
|
||||
//更新Button文字
|
||||
onBuildPipelineEntity.SetButtonName($"打包资源包【版本:{BuildAssetDataSetting.packageVersion}】");
|
||||
onUpdateBuildPipelineEntity.SetButtonName($"更新至服务器【版本:{BuildAssetDataSetting.packageVersion}】");
|
||||
}
|
||||
}
|
||||
|
||||
public enum BuildAssetType
|
||||
{
|
||||
Login,
|
||||
Build,
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,30 +7,36 @@ using YooAsset.Editor;
|
||||
namespace Stary.Evo.Editor
|
||||
{
|
||||
[Serializable]
|
||||
public class BuiltinBuildPipelineViewer :AbstractBuildPipelineViewer
|
||||
public class BuiltinBuildPipelineViewer : AbstractBuildPipelineViewer
|
||||
{
|
||||
public BuiltinBuildPipelineViewer(BuildAssetDataSetting packageName) : base(packageName)
|
||||
public BuiltinBuildPipelineViewer(string packageName, string selectedBuildPipelines, string packageVersion) :
|
||||
base(packageName, selectedBuildPipelines, packageVersion)
|
||||
{
|
||||
// isSimulate = false;
|
||||
// isSimulate = false;
|
||||
}
|
||||
|
||||
public override void ExecuteBuild()
|
||||
{
|
||||
var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString());
|
||||
var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString());
|
||||
var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString());
|
||||
var compressOption = AssetBundleBuilderSetting.GetPackageCompressOption(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString());
|
||||
var clearBuildCache = AssetBundleBuilderSetting.GetPackageClearBuildCache(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString());
|
||||
var useAssetDependencyDB = AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString());
|
||||
var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(packageName, selectedBuildPipelines);
|
||||
var buildinFileCopyOption =
|
||||
AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(packageName, selectedBuildPipelines);
|
||||
var buildinFileCopyParams =
|
||||
AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(packageName, selectedBuildPipelines);
|
||||
var compressOption =
|
||||
AssetBundleBuilderSetting.GetPackageCompressOption(packageName, selectedBuildPipelines);
|
||||
var clearBuildCache =
|
||||
AssetBundleBuilderSetting.GetPackageClearBuildCache(packageName, selectedBuildPipelines);
|
||||
var useAssetDependencyDB =
|
||||
AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(packageName, selectedBuildPipelines);
|
||||
|
||||
BuiltinBuildParameters buildParameters = new BuiltinBuildParameters();
|
||||
buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
|
||||
buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
|
||||
buildParameters.BuildPipeline = dataSetting.selectedBuildPipelines.ToString();
|
||||
buildParameters.BuildPipeline = selectedBuildPipelines.ToString();
|
||||
buildParameters.BuildBundleType = (int)EBuildBundleType.AssetBundle;
|
||||
buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget;
|
||||
buildParameters.PackageName = dataSetting.packageName;
|
||||
buildParameters.PackageVersion =dataSetting.GetBuildPackageVersion();
|
||||
buildParameters.PackageName = packageName;
|
||||
buildParameters.PackageVersion = packageVersion;
|
||||
buildParameters.EnableSharePackRule = true;
|
||||
buildParameters.VerifyBuildingResult = true;
|
||||
buildParameters.FileNameStyle = fileNameStyle;
|
||||
@@ -49,8 +55,6 @@ namespace Stary.Evo.Editor
|
||||
//EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory);
|
||||
base.ExecuteBuild();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,7 @@ namespace Stary.Evo.Editor
|
||||
{
|
||||
public class CreatAssetWindow : OdinEditorWindow
|
||||
{
|
||||
[MenuItem("Evo/创建Domain作用域")]
|
||||
[MenuItem("Evo/Dev/创建Domain作用域")]
|
||||
static void Init()
|
||||
{
|
||||
// Get existing open window or if none, make a new one:
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using EditorFramework;
|
||||
using Sirenix.OdinInspector;
|
||||
using UnityEditor;
|
||||
|
||||
namespace Stary.Evo.Editor
|
||||
{
|
||||
[Serializable]
|
||||
public class CreatDomainEntity
|
||||
{
|
||||
private List<CreatDomainEntity> domainList;
|
||||
|
||||
[HorizontalGroup] [ReadOnly] public string DomainName;
|
||||
[ReadOnly]
|
||||
public string domainPath;
|
||||
|
||||
|
||||
public CreatDomainEntity(List<CreatDomainEntity> domainList)
|
||||
{
|
||||
this.domainList = domainList;
|
||||
}
|
||||
[HorizontalGroup(Width = 60)]
|
||||
[Button("", Icon = SdfIconType.ArrowRepeat, IconAlignment = IconAlignment.RightEdge)]
|
||||
public void CreatDomain()
|
||||
{
|
||||
if (DomainName == "Main")
|
||||
{
|
||||
EditorUtility.DisplayDialog("提示", "主包Main作用域无法再次创建", "确定");
|
||||
return;
|
||||
}
|
||||
bool isOk = EditorUtility.DisplayDialog("提示", "是否检索并创建缺失目录", "是", "否");
|
||||
if (isOk)
|
||||
{
|
||||
CreatAssetWindow.CreateDomainDirectory(DomainName);
|
||||
}
|
||||
}
|
||||
[HorizontalGroup(Width = 60)]
|
||||
[Button("", Icon = SdfIconType.XCircle, IconAlignment = IconAlignment.RightEdge)]
|
||||
public void CloseDomain()
|
||||
{
|
||||
if (DomainName == "Main")
|
||||
{
|
||||
EditorUtility.DisplayDialog("提示", "主包Main作用域无法删除", "确定");
|
||||
return;
|
||||
}
|
||||
bool isOk = EditorUtility.DisplayDialog("提示", "是否删除此Domain", "是", "否");
|
||||
if (isOk)
|
||||
{
|
||||
BuildArtAssetWindow.RemoveBuildAssetWindow();
|
||||
EditorFrameworkUtils.DeleteAllChild(domainPath, FileAttributes.Normal);
|
||||
domainList.Clear();
|
||||
AssetDatabase.Refresh();
|
||||
|
||||
AssetDatabase.SaveAssets();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6799dae03a614d0cbd6263333517b6af
|
||||
timeCreated: 1761274861
|
||||
@@ -12,8 +12,15 @@ namespace Stary.Evo.Editor
|
||||
[Serializable]
|
||||
public class AbstractBuildPipelineViewer
|
||||
{
|
||||
protected BuildAssetDataSetting dataSetting;
|
||||
//protected BuildAssetDataSetting dataSetting;
|
||||
|
||||
#region 打包相关参数
|
||||
|
||||
protected string packageName;
|
||||
protected string selectedBuildPipelines;
|
||||
protected string packageVersion;
|
||||
|
||||
#endregion
|
||||
// protected bool isSimulate;
|
||||
// protected bool isRaw;
|
||||
|
||||
@@ -21,15 +28,15 @@ namespace Stary.Evo.Editor
|
||||
[HorizontalGroup("BuildCache")]
|
||||
[InfoBox("当不勾选此项的时候,引擎会开启增量打包模式,会极大提高构建速度!")]
|
||||
[OnValueChanged("SetBuildCacheToggle")]
|
||||
[HideIf("@ dataSetting.selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline")]
|
||||
[HideIf("@ selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline.ToString()")]
|
||||
public bool clearBuildCacheToggle;
|
||||
|
||||
[Title("依赖数据库", titleAlignment: TitleAlignments.Centered)]
|
||||
[HorizontalGroup("BuildCache")]
|
||||
[InfoBox("当开启此项的时候,会极大提高构建速度!")]
|
||||
[OnValueChanged("SetUseAssetDependencyDB")]
|
||||
[HideIf("@ dataSetting.selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline")]
|
||||
public bool useAssetDependencyDBToggle;
|
||||
[HideIf("@ selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline.ToString()")]
|
||||
public bool useAssetDependencyDBToggle=true;
|
||||
|
||||
|
||||
|
||||
@@ -37,7 +44,7 @@ namespace Stary.Evo.Editor
|
||||
[HorizontalGroup("BuildCache"), HideLabel]
|
||||
[InfoBox("推荐LZ4压缩方式")]
|
||||
[OnValueChanged("SetCompression")]
|
||||
[HideIf("@ dataSetting.selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline")]
|
||||
[HideIf("@ selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline.ToString()")]
|
||||
public ECompressOption compression = ECompressOption.LZ4;
|
||||
|
||||
// [Title("资源包文件名称样式", titleAlignment: TitleAlignments.Centered)]
|
||||
@@ -50,8 +57,8 @@ namespace Stary.Evo.Editor
|
||||
[VerticalGroup("BuildCache/FileStyle"), HideLabel]
|
||||
[InfoBox("资源拷贝方式,是否拷贝StreamingAssets")]
|
||||
[OnValueChanged("SetCopyBuildinFileOption")]
|
||||
[HideIf("@ dataSetting.selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline")]
|
||||
public EBuildinFileCopyOption copyBuildinFileOption;
|
||||
[HideIf("@ selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline.ToString()")]
|
||||
public EBuildinFileCopyOption copyBuildinFileOption = EBuildinFileCopyOption.ClearAndCopyAll;
|
||||
|
||||
[VerticalGroup("BuildCache/FileStyle"), HideLabel]
|
||||
[OnValueChanged("SetCopyBuildinFileParams")]
|
||||
@@ -59,9 +66,11 @@ namespace Stary.Evo.Editor
|
||||
"@copyBuildinFileOption==EBuildinFileCopyOption.ClearAndCopyByTags||copyBuildinFileOption==EBuildinFileCopyOption.OnlyCopyByTags ")]
|
||||
public string copyBuildinFileParams;
|
||||
|
||||
public AbstractBuildPipelineViewer(BuildAssetDataSetting dataSetting)
|
||||
public AbstractBuildPipelineViewer(string packageName,string selectedBuildPipelines,string packageVersion)
|
||||
{
|
||||
this.dataSetting = dataSetting;
|
||||
//this.dataSetting = dataSetting;
|
||||
SetBuildPackageData(packageName,selectedBuildPipelines,packageVersion);
|
||||
|
||||
useAssetDependencyDBToggle = true;
|
||||
SetUseAssetDependencyDB();
|
||||
clearBuildCacheToggle = false;
|
||||
@@ -74,26 +83,32 @@ namespace Stary.Evo.Editor
|
||||
SetCopyBuildinFileOption();
|
||||
}
|
||||
|
||||
public void SetBuildPackageData(string packageName,string selectedBuildPipelines,string packageVersion)
|
||||
{
|
||||
this.packageName = packageName;
|
||||
this.selectedBuildPipelines = selectedBuildPipelines;
|
||||
this.packageVersion = packageVersion;
|
||||
}
|
||||
#region AssetBuild
|
||||
|
||||
private void SetCompression()
|
||||
{
|
||||
AssetBundleBuilderSetting.SetPackageCompressOption(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString(),
|
||||
AssetBundleBuilderSetting.SetPackageCompressOption(packageName, selectedBuildPipelines,
|
||||
compression);
|
||||
}
|
||||
|
||||
private void SetFileNameStyle()
|
||||
{
|
||||
|
||||
AssetBundleBuilderSetting.SetPackageFileNameStyle(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString(),
|
||||
AssetBundleBuilderSetting.SetPackageFileNameStyle(packageName, selectedBuildPipelines,
|
||||
fileNameStyle);
|
||||
}
|
||||
|
||||
private void SetCopyBuildinFileOption()
|
||||
{
|
||||
|
||||
AssetBundleBuilderSetting.SetPackageBuildinFileCopyOption(dataSetting.packageName,
|
||||
dataSetting.selectedBuildPipelines.ToString(), copyBuildinFileOption);
|
||||
AssetBundleBuilderSetting.SetPackageBuildinFileCopyOption(packageName,
|
||||
selectedBuildPipelines, copyBuildinFileOption);
|
||||
|
||||
//PlayerPrefs.SetInt("CopyBuildinFileOption", (int)copyBuildinFileOption);
|
||||
}
|
||||
@@ -101,21 +116,21 @@ namespace Stary.Evo.Editor
|
||||
private void SetCopyBuildinFileParams()
|
||||
{
|
||||
|
||||
AssetBundleBuilderSetting.SetPackageBuildinFileCopyParams(dataSetting.packageName,
|
||||
dataSetting.selectedBuildPipelines.ToString(), copyBuildinFileParams);
|
||||
AssetBundleBuilderSetting.SetPackageBuildinFileCopyParams(packageName,
|
||||
selectedBuildPipelines, copyBuildinFileParams);
|
||||
//PlayerPrefs.SetInt("CopyBuildinFileOption", (int)copyBuildinFileOption);
|
||||
}
|
||||
|
||||
public void SetBuildCacheToggle()
|
||||
{
|
||||
AssetBundleBuilderSetting.SetPackageClearBuildCache(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString(),
|
||||
AssetBundleBuilderSetting.SetPackageClearBuildCache(packageName, selectedBuildPipelines,
|
||||
clearBuildCacheToggle);
|
||||
}
|
||||
|
||||
private void SetUseAssetDependencyDB()
|
||||
public void SetUseAssetDependencyDB()
|
||||
{
|
||||
|
||||
AssetBundleBuilderSetting.SetPackageUseAssetDependencyDB(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString(),
|
||||
AssetBundleBuilderSetting.SetPackageUseAssetDependencyDB(packageName, selectedBuildPipelines,
|
||||
useAssetDependencyDBToggle);
|
||||
}
|
||||
|
||||
@@ -139,8 +154,8 @@ namespace Stary.Evo.Editor
|
||||
protected IEncryptionServices CreateEncryptionInstance()
|
||||
{
|
||||
var encyptionClassName =
|
||||
AssetBundleBuilderSetting.GetPackageEncyptionServicesClassName(dataSetting.packageName,
|
||||
dataSetting.selectedBuildPipelines.ToString());
|
||||
AssetBundleBuilderSetting.GetPackageEncyptionServicesClassName(packageName,
|
||||
selectedBuildPipelines);
|
||||
var encryptionClassTypes = EditorTools.GetAssignableTypes(typeof(IEncryptionServices));
|
||||
var classType = encryptionClassTypes.Find(x => x.FullName.Equals(encyptionClassName));
|
||||
if (classType != null)
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace Stary.Evo.Editor
|
||||
{
|
||||
public class OneKeyBuildWindow : OdinEditorWindow
|
||||
{
|
||||
[MenuItem("Evo/(一键)打包工具")]
|
||||
[MenuItem("Evo/Dev/(一键)打包工具")]
|
||||
static void Init()
|
||||
{
|
||||
#if NotUpdate
|
||||
|
||||
@@ -9,7 +9,8 @@ namespace Stary.Evo.Editor
|
||||
[Serializable]
|
||||
public class RawfileBuildpipelineViewer:AbstractBuildPipelineViewer
|
||||
{
|
||||
public RawfileBuildpipelineViewer(BuildAssetDataSetting packageName) : base(packageName)
|
||||
public RawfileBuildpipelineViewer(string packageName, string selectedBuildPipelines, string packageVersion) :
|
||||
base(packageName, selectedBuildPipelines, packageVersion)
|
||||
{
|
||||
// isSimulate = false;
|
||||
// isRaw = true;
|
||||
@@ -18,20 +19,20 @@ namespace Stary.Evo.Editor
|
||||
|
||||
public override void ExecuteBuild()
|
||||
{
|
||||
var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString());
|
||||
var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString());
|
||||
var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString());
|
||||
var clearBuildCache = AssetBundleBuilderSetting.GetPackageClearBuildCache(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString());
|
||||
var useAssetDependencyDB = AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString());
|
||||
var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(packageName, selectedBuildPipelines);
|
||||
var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(packageName, selectedBuildPipelines);
|
||||
var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(packageName, selectedBuildPipelines);
|
||||
var clearBuildCache = AssetBundleBuilderSetting.GetPackageClearBuildCache(packageName, selectedBuildPipelines);
|
||||
var useAssetDependencyDB = AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(packageName, selectedBuildPipelines);
|
||||
|
||||
RawFileBuildParameters buildParameters = new RawFileBuildParameters();
|
||||
buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
|
||||
buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
|
||||
buildParameters.BuildPipeline = dataSetting.selectedBuildPipelines.ToString();
|
||||
buildParameters.BuildPipeline = selectedBuildPipelines;
|
||||
buildParameters.BuildBundleType = (int)EBuildBundleType.RawBundle;
|
||||
buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget;
|
||||
buildParameters.PackageName = dataSetting.packageName;
|
||||
buildParameters.PackageVersion =dataSetting.GetBuildPackageVersion();
|
||||
buildParameters.PackageName = packageName;
|
||||
buildParameters.PackageVersion =packageVersion;
|
||||
buildParameters.VerifyBuildingResult = true;
|
||||
buildParameters.FileNameStyle = fileNameStyle;
|
||||
buildParameters.BuildinFileCopyOption = buildinFileCopyOption;
|
||||
|
||||
@@ -9,29 +9,30 @@ namespace Stary.Evo.Editor
|
||||
[Serializable]
|
||||
public class ScriptableBuildPipelineViewer:AbstractBuildPipelineViewer
|
||||
{
|
||||
public ScriptableBuildPipelineViewer(BuildAssetDataSetting packageName) : base(packageName)
|
||||
public ScriptableBuildPipelineViewer(string packageName, string selectedBuildPipelines, string packageVersion) :
|
||||
base(packageName, selectedBuildPipelines, packageVersion)
|
||||
{
|
||||
//isSimulate = false;
|
||||
}
|
||||
|
||||
public override void ExecuteBuild()
|
||||
{
|
||||
var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString());
|
||||
var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString());
|
||||
var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString());
|
||||
var compressOption = AssetBundleBuilderSetting.GetPackageCompressOption(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString());
|
||||
var clearBuildCache = AssetBundleBuilderSetting.GetPackageClearBuildCache(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString());
|
||||
var useAssetDependencyDB = AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString());
|
||||
var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(packageName, selectedBuildPipelines);
|
||||
var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(packageName, selectedBuildPipelines);
|
||||
var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(packageName, selectedBuildPipelines);
|
||||
var compressOption = AssetBundleBuilderSetting.GetPackageCompressOption(packageName, selectedBuildPipelines);
|
||||
var clearBuildCache = AssetBundleBuilderSetting.GetPackageClearBuildCache(packageName, selectedBuildPipelines);
|
||||
var useAssetDependencyDB = AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(packageName, selectedBuildPipelines);
|
||||
var builtinShaderBundleName = GetBuiltinShaderBundleName();
|
||||
|
||||
ScriptableBuildParameters buildParameters = new ScriptableBuildParameters();
|
||||
buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
|
||||
buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
|
||||
buildParameters.BuildPipeline = dataSetting.selectedBuildPipelines.ToString();
|
||||
buildParameters.BuildPipeline = selectedBuildPipelines;
|
||||
buildParameters.BuildBundleType = (int)EBuildBundleType.AssetBundle;
|
||||
buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget;
|
||||
buildParameters.PackageName = dataSetting.packageName;
|
||||
buildParameters.PackageVersion = dataSetting.GetBuildPackageVersion();
|
||||
buildParameters.PackageName = packageName;
|
||||
buildParameters.PackageVersion = packageVersion;
|
||||
buildParameters.EnableSharePackRule = true;
|
||||
buildParameters.VerifyBuildingResult = true;
|
||||
buildParameters.FileNameStyle = fileNameStyle;
|
||||
@@ -63,7 +64,7 @@ namespace Stary.Evo.Editor
|
||||
{
|
||||
var uniqueBundleName = AssetBundleCollectorSettingData.Setting.UniqueBundleName;
|
||||
var packRuleResult = DefaultPackRule.CreateShadersPackRuleResult();
|
||||
return packRuleResult.GetBundleName(dataSetting.packageName, uniqueBundleName);
|
||||
return packRuleResult.GetBundleName(packageName, uniqueBundleName);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,25 +8,25 @@ namespace Stary.Evo.Editor
|
||||
[Serializable]
|
||||
public class SimulateBuildPipelineViewer:AbstractBuildPipelineViewer
|
||||
{
|
||||
public SimulateBuildPipelineViewer(BuildAssetDataSetting packageName) : base(packageName)
|
||||
public SimulateBuildPipelineViewer(string packageName, string selectedBuildPipelines, string packageVersion) : base(packageName, selectedBuildPipelines, packageVersion)
|
||||
{
|
||||
//isSimulate = true;
|
||||
}
|
||||
|
||||
public override void ExecuteBuild()
|
||||
{
|
||||
var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString());
|
||||
var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString());
|
||||
var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(dataSetting.packageName, dataSetting.selectedBuildPipelines.ToString());
|
||||
var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(packageName, selectedBuildPipelines);
|
||||
var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(packageName, selectedBuildPipelines);
|
||||
var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(packageName, selectedBuildPipelines);
|
||||
|
||||
EditorSimulateBuildParameters buildParameters = new EditorSimulateBuildParameters();
|
||||
buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
|
||||
buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
|
||||
buildParameters.BuildPipeline = dataSetting.selectedBuildPipelines.ToString();
|
||||
buildParameters.BuildPipeline = selectedBuildPipelines;
|
||||
buildParameters.BuildBundleType = (int)EBuildBundleType.VirtualBundle;
|
||||
buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget;
|
||||
buildParameters.PackageName = dataSetting.packageName;
|
||||
buildParameters.PackageVersion = dataSetting.GetBuildPackageVersion();
|
||||
buildParameters.PackageName = packageName;
|
||||
buildParameters.PackageVersion = packageVersion;
|
||||
buildParameters.VerifyBuildingResult = true;
|
||||
buildParameters.FileNameStyle = fileNameStyle;
|
||||
buildParameters.BuildinFileCopyOption = buildinFileCopyOption;
|
||||
|
||||
@@ -24,7 +24,10 @@ namespace Stary.Evo.Editor
|
||||
{
|
||||
get { return Application.dataPath + "/Domain"; }
|
||||
}
|
||||
|
||||
public static string ArtRoot
|
||||
{
|
||||
get { return Application.dataPath + "/Art"; }
|
||||
}
|
||||
|
||||
//[MenuItem("Evo/Hotfix/Addressable")]
|
||||
public static void AddHotfixAddressableDll()
|
||||
@@ -134,7 +137,7 @@ namespace Stary.Evo.Editor
|
||||
{
|
||||
YooAsset.Editor.AssetBundleCollectorSettingData.RemovePackage(assetBundleCollectorPackage);
|
||||
}
|
||||
Mark();
|
||||
MarkDomain();
|
||||
|
||||
CreateRes(_packageName,
|
||||
$"{DomainRoot}/{oneKeyBUildEntity.DomainName}/AddressableRes",
|
||||
@@ -145,8 +148,26 @@ namespace Stary.Evo.Editor
|
||||
}
|
||||
}
|
||||
|
||||
//[MenuItem("Evo/Hotfix/标记资源")]
|
||||
public static void AddMark()
|
||||
public static void AddArtMark(Action complete)
|
||||
{
|
||||
_packageName = BuildArtAssetWindow.GetBuildPackageName();
|
||||
AssetBundleCollectorPackage assetBundleCollectorPackage = null;
|
||||
foreach (var package in AssetBundleCollectorSettingData.Setting.Packages)
|
||||
{
|
||||
if (package.PackageName ==_packageName)
|
||||
{
|
||||
assetBundleCollectorPackage = package;
|
||||
}
|
||||
}
|
||||
if (assetBundleCollectorPackage != null)
|
||||
{
|
||||
YooAsset.Editor.AssetBundleCollectorSettingData.RemovePackage(assetBundleCollectorPackage);
|
||||
}
|
||||
MarkArt();
|
||||
CollectSVC(ArtRoot, _packageName,complete);
|
||||
}
|
||||
|
||||
public static void AddDomainMark()
|
||||
{
|
||||
// //清空主包旧数据
|
||||
AssetBundleCollectorPackage assetBundleCollectorPackage = null;
|
||||
@@ -173,14 +194,16 @@ namespace Stary.Evo.Editor
|
||||
DomainConfig domainConfig =
|
||||
AssetDatabase.LoadAssetAtPath<DomainConfig>(configPath);
|
||||
_packageName = domainConfig.domain;
|
||||
Mark();
|
||||
MarkDomain();
|
||||
|
||||
|
||||
CreateRes(_packageName,
|
||||
$"{DomainRoot}/{BuildAssetWindow.GetBuildPackageName()}/AddressableRes",
|
||||
$"{DomainRoot}/{BuildAssetWindow.GetBuildPackageName()}/HotUpdate");
|
||||
CollectSVC(BuildAssetWindow.GetBuildPackageName());
|
||||
EditorUtility.DisplayDialog("自动标记", "自动标记成功", "确定");
|
||||
CollectSVC(DomainRoot,BuildAssetWindow.GetBuildPackageName(),()=>
|
||||
{
|
||||
EditorUtility.DisplayDialog("自动标记", "自动标记成功", "确定");
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -198,7 +221,61 @@ namespace Stary.Evo.Editor
|
||||
public static Dictionary<string, AssetBundleCollectorGroup> collectorGroupDic =
|
||||
new Dictionary<string, AssetBundleCollectorGroup>();
|
||||
|
||||
public static void Mark()
|
||||
public static void MarkArt()
|
||||
{
|
||||
addressDic.Clear();
|
||||
collectorGroupDic.Clear();
|
||||
///创建分组
|
||||
string remotedRoot = $"{ArtRoot}/{_packageName}";
|
||||
DirectoryInfo[] dirs = new DirectoryInfo(remotedRoot).GetDirectories();
|
||||
|
||||
var setting = YooAsset.Editor.AssetBundleCollectorSettingData.Setting;
|
||||
setting.ShowPackageView = true;
|
||||
setting.UniqueBundleName = true;
|
||||
//创建Package文件
|
||||
package = YooAsset.Editor.AssetBundleCollectorSettingData.CreatePackage(_packageName);
|
||||
|
||||
//检测Packages是否存在TestPackage
|
||||
package.PackageName = _packageName;
|
||||
package.EnableAddressable = true;
|
||||
package.IncludeAssetGUID = true;
|
||||
package.AutoCollectShaders = true;
|
||||
package.IgnoreRuleName = "NormalIgnoreRule";
|
||||
|
||||
//检测Packages是否存在Group
|
||||
foreach (var info in dirs)
|
||||
{
|
||||
string groupName = info.Name;
|
||||
|
||||
if (info.Name == "Scenes")
|
||||
{
|
||||
AssetBundleCollectorGroup collectorGroup =
|
||||
YooAsset.Editor.AssetBundleCollectorSettingData.CreateGroup(package, groupName);
|
||||
collectorGroup.AssetTags = groupName;
|
||||
if (!collectorGroupDic.ContainsKey(groupName))
|
||||
{
|
||||
collectorGroupDic.Add(groupName, collectorGroup);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError("分组 : " + groupName + "已存在,请检查资源目录,避免重复");
|
||||
}
|
||||
AutoMarkRootAddress(info);
|
||||
break;
|
||||
}
|
||||
}
|
||||
// AssetDatabase.SaveAssets();
|
||||
// AssetDatabase.Refresh();
|
||||
MarkStatus();
|
||||
YooAsset.Editor.AssetBundleCollectorSettingData.SaveFile();
|
||||
|
||||
// CreateRes();
|
||||
|
||||
|
||||
Debug.Log("MarkAsset Successful");
|
||||
}
|
||||
|
||||
public static void MarkDomain()
|
||||
{
|
||||
addressDic.Clear();
|
||||
collectorGroupDic.Clear();
|
||||
@@ -485,9 +562,9 @@ namespace Stary.Evo.Editor
|
||||
}
|
||||
}
|
||||
|
||||
public static void CollectSVC(string packageName)
|
||||
public static void CollectSVC(string root,string packageName,Action complete)
|
||||
{
|
||||
string remotedRoot = $"{DomainRoot}/{packageName}/ShaderVariants";
|
||||
string remotedRoot = $"{root}/{packageName}/ShaderVariants";
|
||||
string remotedRootFileName = $"{remotedRoot}/{packageName}.shadervariants";
|
||||
if (!Directory.Exists(remotedRoot))
|
||||
{
|
||||
@@ -509,6 +586,8 @@ namespace Stary.Evo.Editor
|
||||
$"UnityEvo:【{packageName}】VariantCount : {collection.variantCount}");
|
||||
|
||||
CreateShaderVariantsGroup(packageName, localSavePath);
|
||||
|
||||
complete?.Invoke();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
3
Assets/00.StaryEvo/Editor/Type.meta
Normal file
3
Assets/00.StaryEvo/Editor/Type.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6db9ac74e11743f88b708a1018685c93
|
||||
timeCreated: 1761199081
|
||||
8
Assets/00.StaryEvo/Editor/Type/BuildType.cs
Normal file
8
Assets/00.StaryEvo/Editor/Type/BuildType.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
namespace Stary.Evo
|
||||
{
|
||||
public enum BuildAssetType
|
||||
{
|
||||
Login,
|
||||
Build,
|
||||
}
|
||||
}
|
||||
3
Assets/00.StaryEvo/Editor/Type/BuildType.cs.meta
Normal file
3
Assets/00.StaryEvo/Editor/Type/BuildType.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7153744cd9354cff92f319655857379f
|
||||
timeCreated: 1761199110
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "com.staryevo.main",
|
||||
"version": "2.0.13",
|
||||
"version": "2.0.14",
|
||||
"displayName": "00.StaryEvo",
|
||||
"description": "This is an Framework package(后台服务器版本,端口9527)",
|
||||
"unity": "2021.3",
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace Stary.Evo
|
||||
/// </summary>
|
||||
private static GameObject _MainBaseModel;
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 赋值默认的实例
|
||||
|
||||
@@ -16,7 +16,8 @@ namespace Stary.Evo
|
||||
{
|
||||
private DomainConfig.LoadResType loadResType;
|
||||
public GameObject mainPrefab;
|
||||
private DomainConfig domainConfig;
|
||||
private DomainConfig domainConfig;
|
||||
|
||||
public LoadResState(IFsmSystemAsync system) : base(system)
|
||||
{
|
||||
}
|
||||
@@ -39,42 +40,33 @@ namespace Stary.Evo
|
||||
loadResType = domainConfig.loadResType;
|
||||
Type type = param2 as Type;
|
||||
var package = YooAssets.GetPackage(domainConfig.domain);
|
||||
if (loadResType == DomainConfig.LoadResType.Prefab)
|
||||
switch (loadResType)
|
||||
{
|
||||
// 加载热更资源
|
||||
var loadOperation = package.LoadAssetAsync<GameObject>(domainConfig.mainPrefab);
|
||||
case DomainConfig.LoadResType.Prefab:
|
||||
|
||||
await loadOperation;
|
||||
if (loadOperation.Status == EOperationStatus.Succeed)
|
||||
{
|
||||
LoadDomainPrefab(package);
|
||||
|
||||
#if Immersal
|
||||
ARSpace arSpace = GameObject.FindObjectOfType<ARSpace>();
|
||||
if (arSpace != null)
|
||||
break;
|
||||
case DomainConfig.LoadResType.Scene:
|
||||
|
||||
var sceneMode = domainConfig.loadSceneMode;
|
||||
var physicsMode = LocalPhysicsMode.None;
|
||||
SceneHandle handle = package.LoadSceneAsync(domainConfig.mainScene, sceneMode, physicsMode);
|
||||
await handle;
|
||||
Scene targetScene = SceneManager.GetSceneByName(domainConfig.mainScene);
|
||||
targetScene.name = domainConfig.mainScene;
|
||||
// 设置为 active scene 或者后续 Move 到该 scene
|
||||
SceneManager.SetActiveScene(targetScene);
|
||||
|
||||
mainPrefab = GameObject.Find(domainConfig.mainPrefab);
|
||||
if (mainPrefab == null)
|
||||
{
|
||||
Debug.Log("UnityEvo:找到ARSpace,开始加载点云运行环境...");
|
||||
mainPrefab = loadOperation.InstantiateSync(arSpace.transform);
|
||||
} else
|
||||
{
|
||||
Debug.Log("UnityEvo:未找到ARSpace,开始加载普通运行环境,通过语音唤醒...");
|
||||
mainPrefab = loadOperation.InstantiateSync();
|
||||
LoadDomainPrefab(package);
|
||||
}
|
||||
#elif NotPointClond
|
||||
mainPrefab = loadOperation.InstantiateSync();
|
||||
#endif
|
||||
if(domainConfig.domain =="Main")
|
||||
AppConfig.SetDefaultMainInstance(mainPrefab);
|
||||
}
|
||||
}
|
||||
else if (loadResType == DomainConfig.LoadResType.Scene)
|
||||
{
|
||||
var sceneMode = domainConfig.loadSceneMode;
|
||||
var physicsMode = LocalPhysicsMode.None;
|
||||
SceneHandle handle = package.LoadSceneAsync(domainConfig.mainScene, sceneMode, physicsMode);
|
||||
await handle;
|
||||
mainPrefab = GameObject.Find(domainConfig.mainPrefab);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
LocalTransformInfo info = mainPrefab.GetOrAddComponent<LocalTransformInfo>();
|
||||
FsmLoadSystem fsmLoadSystem = FsmSystem as FsmLoadSystem;
|
||||
|
||||
@@ -93,10 +85,11 @@ namespace Stary.Evo
|
||||
info.transform.position = fsmLoadSystem.GetTransformCtor().position;
|
||||
info.transform.rotation = Quaternion.Euler(fsmLoadSystem.GetTransformCtor().rotation);
|
||||
info.transform.localScale = fsmLoadSystem.GetTransformCtor().scale;
|
||||
}else{
|
||||
info.Switch(0);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
info.Switch(0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -130,6 +123,32 @@ namespace Stary.Evo
|
||||
base.OnUpdate();
|
||||
}
|
||||
|
||||
private async void LoadDomainPrefab(ResourcePackage package)
|
||||
{
|
||||
// 加载热更资源
|
||||
var loadOperation = package.LoadAssetAsync<GameObject>(domainConfig.mainPrefab);
|
||||
|
||||
await loadOperation;
|
||||
if (loadOperation.Status == EOperationStatus.Succeed)
|
||||
{
|
||||
#if Immersal
|
||||
ARSpace arSpace = GameObject.FindObjectOfType<ARSpace>();
|
||||
if (arSpace != null)
|
||||
{
|
||||
Debug.Log("UnityEvo:找到ARSpace,开始加载点云运行环境...");
|
||||
mainPrefab = loadOperation.InstantiateSync(arSpace.transform);
|
||||
} else
|
||||
{
|
||||
Debug.Log("UnityEvo:未找到ARSpace,开始加载普通运行环境,通过语音唤醒...");
|
||||
mainPrefab = loadOperation.InstantiateSync();
|
||||
}
|
||||
#elif NotPointClond
|
||||
mainPrefab = loadOperation.InstantiateSync();
|
||||
#endif
|
||||
if (domainConfig.domain == "Main")
|
||||
AppConfig.SetDefaultMainInstance(mainPrefab);
|
||||
}
|
||||
}
|
||||
|
||||
public override async UniTask OnExitAsync()
|
||||
{
|
||||
@@ -149,7 +168,7 @@ namespace Stary.Evo
|
||||
|
||||
if (loadResType == DomainConfig.LoadResType.Scene)
|
||||
{
|
||||
await SceneManager.UnloadSceneAsync("server");
|
||||
await SceneManager.UnloadSceneAsync(domainConfig.mainScene);
|
||||
}
|
||||
|
||||
if (domainBase != null)
|
||||
@@ -158,7 +177,6 @@ namespace Stary.Evo
|
||||
|
||||
await ForceUnloadAllAssets(domainBase.DomainName);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -58,17 +58,12 @@ namespace Stary.Evo
|
||||
// 初始化资源包
|
||||
#if EDITOR_SIMULATEMODE
|
||||
await EDITOR_SIMULATEMODE(package);
|
||||
FsmSystem.SetCurState(nameof(ResUpdateServerState));
|
||||
FsmSystem.SetCurState(nameof(ResUpdateServerState));
|
||||
#elif OFFLINE_PLAYMODE
|
||||
await OFFLINE_PLAYMODE(package);
|
||||
FsmSystem.SetCurState(nameof(ResUpdateLocalState));
|
||||
#elif HOST_PLAYMODE
|
||||
// if (package.PackageName.Equals("Main"))
|
||||
// {
|
||||
// await OFFLINE_PLAYMODE(package);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
|
||||
//登录
|
||||
string url = AppConfig.IpConfig + "/Authentication/login";
|
||||
bool isLogin = await WebRequestSystem.Login(url, AppConfig.UserName, AppConfig.PassWord);
|
||||
@@ -76,7 +71,7 @@ namespace Stary.Evo
|
||||
await HOST_PLAYMODE(package);
|
||||
else
|
||||
await Chche_PLAYMODE(package);
|
||||
// }
|
||||
|
||||
|
||||
FsmSystem.SetCurState(nameof(ResUpdateLocalState));
|
||||
|
||||
@@ -125,6 +120,7 @@ namespace Stary.Evo
|
||||
|
||||
private async UniTask EDITOR_SIMULATEMODE(ResourcePackage package)
|
||||
{
|
||||
|
||||
var initParams=YooAssetFileSystem.EditorSimulateInitializeParameter(package.PackageName);
|
||||
var initialization = package.InitializeAsync(initParams);
|
||||
await initialization;
|
||||
|
||||
@@ -67,8 +67,14 @@ namespace Stary.Evo
|
||||
{
|
||||
this.domain = domain;
|
||||
_fsmSystem.SetOpenDomainType(openDomainType);
|
||||
AppConfig.PackageDomainName = domain;
|
||||
_fsmSystem.SetCurState(nameof(ResStartState));
|
||||
if (this.domain != AppConfig.PackageDomainName)
|
||||
{
|
||||
AppConfig.PackageDomainName = domain;
|
||||
_fsmSystem.SetCurState(nameof(ResStartState));
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public void OpenDomain(string domain, TransformCtor transformCtor)
|
||||
@@ -76,8 +82,14 @@ namespace Stary.Evo
|
||||
this.domain = domain;
|
||||
_fsmSystem.SetOpenDomainType(OpenDomainType.ImageTracked);
|
||||
_fsmSystem.SetTransformCtor(transformCtor);
|
||||
AppConfig.PackageDomainName = domain;
|
||||
_fsmSystem.SetCurState(nameof(ResStartState));
|
||||
if (this.domain != AppConfig.PackageDomainName)
|
||||
{
|
||||
AppConfig.PackageDomainName = domain;
|
||||
_fsmSystem.SetCurState(nameof(ResStartState));
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public void OpenDomain(string domain, Transform transform)
|
||||
@@ -85,8 +97,14 @@ namespace Stary.Evo
|
||||
this.domain = domain;
|
||||
_fsmSystem.SetOpenDomainType(OpenDomainType.ImageTracked);
|
||||
_fsmSystem.SetTransformCtor(transform);
|
||||
AppConfig.PackageDomainName = domain;
|
||||
_fsmSystem.SetCurState(nameof(ResStartState));
|
||||
if (this.domain != AppConfig.PackageDomainName)
|
||||
{
|
||||
AppConfig.PackageDomainName = domain;
|
||||
_fsmSystem.SetCurState(nameof(ResStartState));
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public void CloseDomain()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "com.staryevo.tools",
|
||||
"version": "1.1.4",
|
||||
"version": "1.1.5",
|
||||
"displayName": "00.StaryEvo.Tools",
|
||||
"description": "This is an Framework package(后台服务器版本,端口9527)",
|
||||
"unity": "2021.3",
|
||||
|
||||
Reference in New Issue
Block a user