This commit is contained in:
2025-11-05 11:36:35 +08:00
parent d2bf1ada3b
commit 63f6bfe22e
5 changed files with 136 additions and 19 deletions

View File

@@ -35,7 +35,7 @@ namespace Stary.Evo.Editor
{ {
CreatMemberFiled(); CreatMemberFiled();
} }
else if (useType == UseType.Project) else if (useType == UseType.Art)
{ {
CreatArtFiled(); CreatArtFiled();
} }
@@ -199,6 +199,8 @@ namespace Stary.Evo.Editor
domainMemberList.Add(domainEntity); domainMemberList.Add(domainEntity);
} }
//添加本地Member
GetMemberLocalAll();
artList = GetCreatDomainAll(); artList = GetCreatDomainAll();
} }
@@ -218,16 +220,17 @@ namespace Stary.Evo.Editor
{ {
artDomainPath = $"{Application.dataPath}/Member/{domain}"; artDomainPath = $"{Application.dataPath}/Member/{domain}";
} }
else if (useType == UseType.Project) else if (useType == UseType.Art)
{ {
artDomainPath = $"{Application.dataPath}/Art/{domain}"; artDomainPath = $"{Application.dataPath}/Art/{domain}";
if (!Directory.Exists(artDomainPath))
{
EditorUtility.DisplayDialog("提示", $"不存在此Domain:{domain},无法创建", "确定");
return;
}
} }
if (!Directory.Exists(artDomainPath))
{
EditorUtility.DisplayDialog("提示", $"不存在此Domain:{domain},无法创建", "确定");
return;
}
if (useType == UseType.Member) if (useType == UseType.Member)
{ {
@@ -237,8 +240,46 @@ namespace Stary.Evo.Editor
CreatDirectory(artDomainPath + "/Scenes"); CreatDirectory(artDomainPath + "/Scenes");
//创建/Scenes/Test文件夹 //创建/Scenes/Test文件夹
CreatDirectory(artDomainPath + "/Scenes/Test"); CreatDirectory(artDomainPath + "/Scenes/Test");
//创建Art 测试场景配置文件
string configDir = $"{artDomainPath}/Config";
// 检测目标文件是否已存在
string assetPath = $"Assets/Member/{domain}/Config/ArtSceneData.asset";
if (File.Exists($"{Application.dataPath}/../{assetPath}"))
{
Debug.LogWarning($"ArtSceneData.asset 已存在: {assetPath}");
// 可选:询问是否覆盖
if (EditorUtility.DisplayDialog("文件已存在",
$"ArtSceneData.asset 已存在,是否覆盖?", "覆盖", "取消"))
{
// 删除现有文件
AssetDatabase.DeleteAsset(assetPath);
AssetDatabase.Refresh();
// 创建新的ArtSceneData
ArtSceneData artSceneData = CreateInstance<ArtSceneData>();
AssetDatabase.CreateAsset(artSceneData, assetPath);
Debug.Log($"已覆盖 ArtSceneData: {assetPath}");
}
else
{
Debug.Log("用户取消创建 ArtSceneData");
}
}
else
{
// 文件不存在,直接创建
ArtSceneData artSceneData = CreateInstance<ArtSceneData>();
AssetDatabase.CreateAsset(artSceneData, assetPath);
Debug.Log($"已创建 ArtSceneData: {assetPath}");
}
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
} }
else if (useType == UseType.Project) else if (useType == UseType.Art)
{ {
//创建Animation文件夹 //创建Animation文件夹
CreatDirectory(artDomainPath + "/Animation"); CreatDirectory(artDomainPath + "/Animation");
@@ -303,13 +344,58 @@ namespace Stary.Evo.Editor
return domainList; return domainList;
} }
/// <summary>
/// 获取全部作用域
/// </summary>
private void GetMemberLocalAll()
{
string domainPath = $"{Application.dataPath}/Member";
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<CreatMemberServerDomainEntity> domainList = new List<CreatMemberServerDomainEntity>();
foreach (var item in domains)
{
if (File.Exists($"{domainPath}/{item}/Config/ArtSceneData.asset"))
{
bool isExit = domainMemberList.Any(x => x.DomainName == item);
if (isExit)
{
continue;
}
CreatMemberServerDomainEntity entity = new CreatMemberServerDomainEntity(domainList)
{
DomainName = item,
domainPath = $"{domainPath}/{item}"
};
entity.SetArtSceneData();
domainList.Add(entity);
}
}
domainMemberList.AddRange(domainList);
}
private void SetUseTypeData() private void SetUseTypeData()
{ {
if (useType == UseType.Member) if (useType == UseType.Member)
{ {
_titleGroupName = "创建成员"; _titleGroupName = "创建成员";
} }
else if (useType == UseType.Project) else if (useType == UseType.Art)
{ {
_titleGroupName = "创建项目Art"; _titleGroupName = "创建项目Art";
} }
@@ -322,7 +408,7 @@ namespace Stary.Evo.Editor
private bool IsProject() private bool IsProject()
{ {
return useType == UseType.Project; return useType == UseType.Art;
} }
/// <summary> /// <summary>
@@ -338,7 +424,7 @@ namespace Stary.Evo.Editor
/// <summary> /// <summary>
/// 项目使用 /// 项目使用
/// </summary> /// </summary>
Project Art
} }
} }
} }

View File

@@ -19,20 +19,24 @@ namespace Stary.Evo.Editor
[HorizontalGroup] [ReadOnly] public string DomainName; [HorizontalGroup] [ReadOnly] public string DomainName;
private bool IsValidPath => IsValidProjectPath(domainPath); private bool IsValidPath => IsValidProjectPath(domainPath);
private bool IsValidIP => string.IsNullOrEmpty(ip);
[ReadOnly] [InfoBox("当前路径在Unity项目中不存在,请检查路径是否需要删除", InfoMessageType.Error, "IsValidPath")] [ReadOnly]
[InfoBox("当前用户在Unity项目中不存在,请检查该用户是否需要删除", InfoMessageType.Warning, "IsValidPath")]
[InfoBox("当前用户在服务器上不存在,暂不支持数据管理,仅支持数据配置", InfoMessageType.Warning, "IsValidIP")]
public string domainPath; public string domainPath;
private ResDmainResponse resDmainResponse; private ResDmainResponse resDmainResponse;
[InlineEditor(InlineEditorObjectFieldModes.CompletelyHidden)] [InlineEditor(InlineEditorObjectFieldModes.CompletelyHidden)] [HideLabel]
[HideLabel]
public ArtSceneData artSceneData; public ArtSceneData artSceneData;
public CreatMemberServerDomainEntity(List<CreatMemberServerDomainEntity> domainList) public CreatMemberServerDomainEntity(List<CreatMemberServerDomainEntity> domainList)
{ {
this.domainList = domainList; this.domainList = domainList;
} }
public void SetDomainData(string domainName, string domainPath, ResDmainResponse response, string ip) public void SetDomainData(string domainName, string domainPath, ResDmainResponse response, string ip)
{ {
resDmainResponse = response; resDmainResponse = response;
@@ -49,8 +53,14 @@ namespace Stary.Evo.Editor
_endableBtnName = "禁用"; _endableBtnName = "禁用";
_endableBtnColor = Color.red; _endableBtnColor = Color.red;
} }
SetArtSceneData();
}
public void SetArtSceneData()
{
string artSceneDataPath = string artSceneDataPath =
$"Assets/Member/{domainName}/Config/ArtSceneData.asset"; $"Assets/Member/{DomainName}/Config/ArtSceneData.asset";
ArtSceneData artSceneData = ArtSceneData artSceneData =
AssetDatabase.LoadAssetAtPath<ArtSceneData>(artSceneDataPath); AssetDatabase.LoadAssetAtPath<ArtSceneData>(artSceneDataPath);
if (artSceneData != null) if (artSceneData != null)
@@ -59,11 +69,13 @@ namespace Stary.Evo.Editor
} }
else else
{ {
Debug.LogError($"UnityEvo:ArtSceneData 不存在,请检查路径{artSceneDataPath}"); //Debug.LogError($"UnityEvo:ArtSceneData 不存在,请检查路径{artSceneDataPath}");
} }
} }
[HorizontalGroup(Width = 60)] [HorizontalGroup(Width = 60)]
[Button("", Icon = SdfIconType.ArrowRepeat, IconAlignment = IconAlignment.RightEdge)] [Button("", Icon = SdfIconType.ArrowDownCircle, IconAlignment = IconAlignment.RightEdge)]
[HideIf("@ IsValidIP")]
public void CreatDomain() public void CreatDomain()
{ {
if (DomainName == "Main") if (DomainName == "Main")
@@ -79,12 +91,14 @@ namespace Stary.Evo.Editor
if (window != null) if (window != null)
{ {
window.CreateDomainDirectory(DomainName); window.CreateDomainDirectory(DomainName);
SetArtSceneData();
} }
} }
} }
[HorizontalGroup(Width = 60)] [HorizontalGroup(Width = 60)]
[Button("", Icon = SdfIconType.XCircle, IconAlignment = IconAlignment.RightEdge)] [Button("", Icon = SdfIconType.XCircle, IconAlignment = IconAlignment.RightEdge)]
[HideIf("@ IsValidIP")]
public async void CloseDomain() public async void CloseDomain()
{ {
if (DomainName == "Main") if (DomainName == "Main")
@@ -129,6 +143,7 @@ namespace Stary.Evo.Editor
[Button("@ _endableBtnName", IconAlignment = IconAlignment.RightEdge)] [Button("@ _endableBtnName", IconAlignment = IconAlignment.RightEdge)]
[GUIColor("@ _endableBtnColor")] [GUIColor("@ _endableBtnColor")]
[DisableIf("@ IsReadOnly")] [DisableIf("@ IsReadOnly")]
[HideIf("@ IsValidIP")]
public async void IsEndable() public async void IsEndable()
{ {
if (DomainName == "Main") if (DomainName == "Main")
@@ -149,6 +164,7 @@ namespace Stary.Evo.Editor
_endableBtnName = "禁用"; _endableBtnName = "禁用";
_endableBtnColor = Color.red; _endableBtnColor = Color.red;
} }
string url = $"{ip}/ResDomain/UpdateResDomain"; string url = $"{ip}/ResDomain/UpdateResDomain";
var requst = new ResDmainUpdateRequst() var requst = new ResDmainUpdateRequst()
{ {

View File

@@ -1,6 +1,6 @@
{ {
"name": "com.staryevo.buildoriginality", "name": "com.staryevo.buildoriginality",
"version": "1.0.6", "version": "1.0.7",
"displayName": "00.StaryEvo.BuildOriginality", "displayName": "00.StaryEvo.BuildOriginality",
"description": "美术打包工具", "description": "美术打包工具",
"unity": "2021.3", "unity": "2021.3",

View File

@@ -32,6 +32,21 @@ namespace Stary.Evo
return; return;
} }
string assetPath = AssetDatabase.GetAssetPath(sceneAsset);
// 验证路径是否在Assets/Art目录下
if (!assetPath.StartsWith("Assets/Art/"))
{
Debug.LogError($"场景必须位于Assets/Art目录下当前路径: {assetPath}");
EditorUtility.DisplayDialog("提示", "场景必须位于Assets/Art目录下,才可配置!", "确定");
// 可以选择自动清空无效的场景引用
sceneAsset = null;
scenePath = "";
sceneIdentifier = "";
return;
}
scenePath = AssetDatabase.GetAssetPath(sceneAsset); scenePath = AssetDatabase.GetAssetPath(sceneAsset);
sceneIdentifier = $"Scenes_{sceneAsset.name}"; sceneIdentifier = $"Scenes_{sceneAsset.name}";

View File

@@ -1,6 +1,6 @@
{ {
"name": "com.staryevo.main", "name": "com.staryevo.main",
"version": "2.0.17", "version": "2.0.18",
"displayName": "00.StaryEvo", "displayName": "00.StaryEvo",
"description": "This is an Framework package(后台服务器版本端口9527)", "description": "This is an Framework package(后台服务器版本端口9527)",
"unity": "2021.3", "unity": "2021.3",