Merge pull request #53 from ZensYue/main

[add]Add ShowEditorAlias 添加显示编辑器名字
pull/62/head
何冠峰 2022-12-03 20:12:31 +08:00 committed by GitHub
commit 81401ca0b8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 186 additions and 18 deletions

View File

@ -17,6 +17,7 @@ namespace YooAsset.Editor
public const string XmlEnableAddressable = "AutoAddressable";
public const string XmlUniqueBundleName = "UniqueBundleName";
public const string XmlShowPackageView = "ShowPackageView";
public const string XmlShowEditorAlias = "ShowEditorAlias";
public const string XmlPackage = "Package";
public const string XmlPackageName = "PackageName";
@ -65,6 +66,7 @@ namespace YooAsset.Editor
bool enableAddressable = false;
bool uniqueBundleName = false;
bool showPackageView = false;
bool showEditorAlias = false;
var commonNodeList = root.GetElementsByTagName(XmlCommon);
if (commonNodeList.Count > 0)
{
@ -79,6 +81,7 @@ namespace YooAsset.Editor
enableAddressable = commonElement.GetAttribute(XmlEnableAddressable) == "True" ? true : false;
uniqueBundleName = commonElement.GetAttribute(XmlUniqueBundleName) == "True" ? true : false;
showPackageView = commonElement.GetAttribute(XmlShowPackageView) == "True" ? true : false;
showEditorAlias = commonElement.GetAttribute(XmlShowEditorAlias) == "True" ? true : false;
}
// 读取包裹配置
@ -153,6 +156,7 @@ namespace YooAsset.Editor
AssetBundleCollectorSettingData.Setting.EnableAddressable = enableAddressable;
AssetBundleCollectorSettingData.Setting.UniqueBundleName = uniqueBundleName;
AssetBundleCollectorSettingData.Setting.ShowPackageView = showPackageView;
AssetBundleCollectorSettingData.Setting.ShowEditorAlias = showEditorAlias;
AssetBundleCollectorSettingData.Setting.Packages.AddRange(packages);
AssetBundleCollectorSettingData.SaveFile();
Debug.Log($"导入配置完毕!");
@ -183,6 +187,7 @@ namespace YooAsset.Editor
commonElement.SetAttribute(XmlEnableAddressable, AssetBundleCollectorSettingData.Setting.EnableAddressable.ToString());
commonElement.SetAttribute(XmlUniqueBundleName, AssetBundleCollectorSettingData.Setting.UniqueBundleName.ToString());
commonElement.SetAttribute(XmlShowPackageView, AssetBundleCollectorSettingData.Setting.ShowPackageView.ToString());
commonElement.SetAttribute(XmlShowEditorAlias, AssetBundleCollectorSettingData.Setting.ShowEditorAlias.ToString());
root.AppendChild(commonElement);
// 设置Package配置

View File

@ -23,6 +23,12 @@ namespace YooAsset.Editor
/// </summary>
public bool UniqueBundleName = false;
/// <summary>
/// 是否显示编辑器别名
/// </summary>
public bool ShowEditorAlias = false;
/// <summary>
/// 包裹列表
/// </summary>

View File

@ -38,6 +38,22 @@ namespace YooAsset.Editor
}
}
private static string GetEditorShowName(string name,Type type)
{
if (Setting != null && Setting.ShowEditorAlias)
{
var attr = YooAssetAttributes.GetAttribute<EditorShowAttribute>(type);
if (attr != null && !string.IsNullOrEmpty(attr.Name))
return attr.Name;
else
return name;
}
else
{
return name;
}
}
public static List<string> GetActiveRuleNames()
{
if (_setting == null)
@ -47,8 +63,8 @@ namespace YooAsset.Editor
foreach (var pair in _cacheActiveRuleTypes)
{
names.Add(pair.Key);
}
return names;
}
return names;
}
public static List<string> GetAddressRuleNames()
{
@ -58,7 +74,7 @@ namespace YooAsset.Editor
List<string> names = new List<string>();
foreach (var pair in _cacheAddressRuleTypes)
{
names.Add(pair.Key);
names.Add(GetEditorShowName(pair.Key, pair.Value));
}
return names;
}
@ -70,7 +86,7 @@ namespace YooAsset.Editor
List<string> names = new List<string>();
foreach (var pair in _cachePackRuleTypes)
{
names.Add(pair.Key);
names.Add(GetEditorShowName(pair.Key, pair.Value));
}
return names;
}
@ -82,10 +98,42 @@ namespace YooAsset.Editor
List<string> names = new List<string>();
foreach (var pair in _cacheFilterRuleTypes)
{
names.Add(pair.Key);
names.Add(GetEditorShowName(pair.Key, pair.Value));
}
return names;
}
public static string GetAddressRuleName(int index)
{
if (_setting == null)
LoadSettingData();
return GetTypesName(_cacheAddressRuleTypes, index);
}
public static string GetPackRuleName(int index)
{
if (_setting == null)
LoadSettingData();
return GetTypesName(_cachePackRuleTypes, index);
}
public static string GetFilterRuleName(int index)
{
if (_setting == null)
LoadSettingData();
return GetTypesName(_cacheFilterRuleTypes, index);
}
static string GetTypesName(Dictionary<string, System.Type> types, int index)
{
if(index >= types.Keys.Count)
{
throw new Exception($"Invalid GetFilterRuleName Keys.Count {types.Keys.Count} : try get index {index}");
}
return types.Keys.ElementAt(index);
}
public static bool HasActiveRuleName(string ruleName)
{
foreach (var pair in _cacheActiveRuleTypes)
@ -353,6 +401,12 @@ namespace YooAsset.Editor
IsDirty = true;
}
public static void ModifyShowEditorAlias(bool showAlias)
{
Setting.ShowEditorAlias = showAlias;
IsDirty = true;
}
// 资源包裹编辑相关
public static AssetBundleCollectorPackage CreatePackage(string packageName)
{

View File

@ -28,6 +28,7 @@ namespace YooAsset.Editor
private Toggle _showPackageToogle;
private Toggle _enableAddressableToogle;
private Toggle _uniqueBundleNameToogle;
private Toggle _showEditorAliasToggle;
private VisualElement _packageContainer;
private ListView _packageListView;
@ -57,14 +58,12 @@ namespace YooAsset.Editor
{
_collectorTypeList = new List<string>()
{
$"{nameof(ECollectorType.MainAssetCollector)}",
$"{nameof(ECollectorType.StaticAssetCollector)}",
$"{nameof(ECollectorType.DependAssetCollector)}"
};
_activeRuleList = AssetBundleCollectorSettingData.GetActiveRuleNames();
_addressRuleList = AssetBundleCollectorSettingData.GetAddressRuleNames();
_packRuleList = AssetBundleCollectorSettingData.GetPackRuleNames();
_filterRuleList = AssetBundleCollectorSettingData.GetFilterRuleNames();
$"{nameof(ECollectorType.MainAssetCollector)}",
$"{nameof(ECollectorType.StaticAssetCollector)}",
$"{nameof(ECollectorType.DependAssetCollector)}"
};
RefreshNames();
VisualElement root = this.rootVisualElement;
@ -95,6 +94,14 @@ namespace YooAsset.Editor
RefreshWindow();
});
_showEditorAliasToggle = root.Q<Toggle>("ShowEditorAlias");
_showEditorAliasToggle.RegisterValueChangedCallback(evt =>
{
AssetBundleCollectorSettingData.ModifyShowEditorAlias(evt.newValue);
RefreshNames();
RefreshWindow();
});
// 配置修复按钮
var fixBtn = root.Q<Button>("FixButton");
fixBtn.clicked += FixBtn_clicked;
@ -286,10 +293,21 @@ namespace YooAsset.Editor
}
}
private void RefreshNames()
{
_activeRuleList = AssetBundleCollectorSettingData.GetActiveRuleNames();
_addressRuleList = AssetBundleCollectorSettingData.GetAddressRuleNames();
_packRuleList = AssetBundleCollectorSettingData.GetPackRuleNames();
_filterRuleList = AssetBundleCollectorSettingData.GetFilterRuleNames();
}
private void RefreshWindow()
{
_showPackageToogle.SetValueWithoutNotify(AssetBundleCollectorSettingData.Setting.ShowPackageView);
_enableAddressableToogle.SetValueWithoutNotify(AssetBundleCollectorSettingData.Setting.EnableAddressable);
_uniqueBundleNameToogle.SetValueWithoutNotify(AssetBundleCollectorSettingData.Setting.UniqueBundleName);
_showEditorAliasToggle.SetValueWithoutNotify(AssetBundleCollectorSettingData.Setting.ShowEditorAlias);
_groupContainer.visible = false;
_collectorContainer.visible = false;
@ -574,7 +592,7 @@ namespace YooAsset.Editor
var popupField = new PopupField<string>(_packRuleList, 0);
popupField.name = "PopupField2";
popupField.style.unityTextAlign = TextAnchor.MiddleLeft;
popupField.style.width = 150;
popupField.style.width = 230;
elementBottom.Add(popupField);
}
{
@ -682,7 +700,8 @@ namespace YooAsset.Editor
popupField1.index = GetAddressRuleIndex(collector.AddressRuleName);
popupField1.RegisterValueChangedCallback(evt =>
{
collector.AddressRuleName = evt.newValue;
var target = (PopupField<string>)evt.target;
collector.AddressRuleName = AssetBundleCollectorSettingData.GetAddressRuleName(target.index);
AssetBundleCollectorSettingData.ModifyCollector(selectGroup, collector);
if (foldout.value)
{
@ -696,7 +715,8 @@ namespace YooAsset.Editor
popupField2.index = GetPackRuleIndex(collector.PackRuleName);
popupField2.RegisterValueChangedCallback(evt =>
{
collector.PackRuleName = evt.newValue;
var target = (PopupField<string>)evt.target;
collector.PackRuleName = AssetBundleCollectorSettingData.GetPackRuleName(target.index);
AssetBundleCollectorSettingData.ModifyCollector(selectGroup, collector);
if (foldout.value)
{
@ -709,7 +729,8 @@ namespace YooAsset.Editor
popupField3.index = GetFilterRuleIndex(collector.FilterRuleName);
popupField3.RegisterValueChangedCallback(evt =>
{
collector.FilterRuleName = evt.newValue;
var target = (PopupField<string>)evt.target;
collector.FilterRuleName = AssetBundleCollectorSettingData.GetFilterRuleName(target.index);
AssetBundleCollectorSettingData.ModifyCollector(selectGroup, collector);
if (foldout.value)
{

View File

@ -9,6 +9,7 @@
<ui:Toggle label="Show Packages" name="ShowPackages" style="width: 196px; -unity-text-align: middle-left;" />
<ui:Toggle label="Enable Addressable" name="EnableAddressable" style="width: 196px; -unity-text-align: middle-left;" />
<ui:Toggle label="Unique Bundle Name" name="UniqueBundleName" style="width: 196px; -unity-text-align: middle-left;" />
<ui:Toggle label="Show Editor Alias" name="ShowEditorAlias" style="width: 196px; -unity-text-align: middle-left;" />
</ui:VisualElement>
<ui:VisualElement name="ContentContainer" style="flex-grow: 1; flex-direction: row;">
<ui:VisualElement name="PackageContainer" style="width: 200px; flex-grow: 0; background-color: rgb(67, 67, 67); border-left-width: 5px; border-right-width: 5px; border-top-width: 5px; border-bottom-width: 5px;">

View File

@ -5,6 +5,7 @@ namespace YooAsset.Editor
/// <summary>
/// 以文件名为定位地址
/// </summary>
[EditorShow("以文件名为定位地址")]
public class AddressByFileName : IAddressRule
{
string IAddressRule.GetAssetAddress(AddressRuleData data)
@ -16,6 +17,7 @@ namespace YooAsset.Editor
/// <summary>
/// 以组名+文件名为定位地址
/// </summary>
[EditorShow("以组名+文件名为定位地址")]
public class AddressByGroupAndFileName : IAddressRule
{
string IAddressRule.GetAssetAddress(AddressRuleData data)
@ -28,6 +30,7 @@ namespace YooAsset.Editor
/// <summary>
/// 以收集器名+文件名为定位地址
/// </summary>
[EditorShow("以收集器名+文件名为定位地址")]
public class AddressByCollectorAndFileName : IAddressRule
{
string IAddressRule.GetAssetAddress(AddressRuleData data)

View File

@ -7,6 +7,7 @@ namespace YooAsset.Editor
/// <summary>
/// 收集所有资源
/// </summary>
[EditorShow("收集所有资源")]
public class CollectAll : IFilterRule
{
public bool IsCollectAsset(FilterRuleData data)
@ -18,6 +19,7 @@ namespace YooAsset.Editor
/// <summary>
/// 只收集场景
/// </summary>
[EditorShow("只收集场景")]
public class CollectScene : IFilterRule
{
public bool IsCollectAsset(FilterRuleData data)
@ -29,6 +31,7 @@ namespace YooAsset.Editor
/// <summary>
/// 只收集预制体
/// </summary>
[EditorShow("只收集预制体")]
public class CollectPrefab : IFilterRule
{
public bool IsCollectAsset(FilterRuleData data)
@ -40,6 +43,7 @@ namespace YooAsset.Editor
/// <summary>
/// 只收集精灵类型的资源
/// </summary>
[EditorShow("只收集精灵类型的资源")]
public class CollectSprite : IFilterRule
{
public bool IsCollectAsset(FilterRuleData data)
@ -63,6 +67,7 @@ namespace YooAsset.Editor
/// <summary>
/// 只收集着色器变种收集文件
/// </summary>
[EditorShow("只收集着色器变种收集文件")]
public class CollectShaderVariants : IFilterRule
{
public bool IsCollectAsset(FilterRuleData data)

View File

@ -10,6 +10,7 @@ namespace YooAsset.Editor
/// 例如:"Assets/UIPanel/Shop/Image/backgroud.png" --> "assets_uipanel_shop_image_backgroud.bundle"
/// 例如:"Assets/UIPanel/Shop/View/main.prefab" --> "assets_uipanel_shop_view_main.bundle"
/// </summary>
[EditorShow("以文件路径作为资源包名")]
public class PackSeparately : IPackRule
{
string IPackRule.GetBundleName(PackRuleData data)
@ -25,6 +26,7 @@ namespace YooAsset.Editor
/// 例如:"Assets/UIPanel/Shop/Image/backgroud.png" --> "assets_uipanel_shop_image.bundle"
/// 例如:"Assets/UIPanel/Shop/View/main.prefab" --> "assets_uipanel_shop_view.bundle"
/// </summary>
[EditorShow("以父类文件夹路径作为资源包名")]
public class PackDirectory : IPackRule
{
public static PackDirectory StaticPackRule = new PackDirectory();
@ -43,6 +45,7 @@ namespace YooAsset.Editor
/// 例如:"Assets/UIPanel/Shop/Image/backgroud.png" --> "assets_uipanel_shop.bundle"
/// 例如:"Assets/UIPanel/Shop/View/main.prefab" --> "assets_uipanel_shop.bundle"
/// </summary>
[EditorShow("以收集器路径下顶级文件夹为资源包名")]
public class PackTopDirectory : IPackRule
{
string IPackRule.GetBundleName(PackRuleData data)
@ -68,6 +71,7 @@ namespace YooAsset.Editor
/// 以收集器路径作为资源包名
/// 注意:收集的所有文件打进一个资源包
/// </summary>
[EditorShow("以收集器路径作为资源包名")]
public class PackCollector : IPackRule
{
string IPackRule.GetBundleName(PackRuleData data)
@ -90,6 +94,7 @@ namespace YooAsset.Editor
/// 以分组名称作为资源包名
/// 注意:收集的所有文件打进一个资源包
/// </summary>
[EditorShow("以分组名称作为资源包名")]
public class PackGroup : IPackRule
{
string IPackRule.GetBundleName(PackRuleData data)
@ -102,6 +107,7 @@ namespace YooAsset.Editor
/// 原生文件打包模式
/// 注意:原生文件打包支持:图片,音频,视频,文本
/// </summary>
[EditorShow("原生文件打包模式")]
public class PackRawFile : IPackRule
{
string IPackRule.GetBundleName(PackRuleData data)
@ -128,6 +134,7 @@ namespace YooAsset.Editor
/// <summary>
/// 着色器变种收集文件
/// </summary>
[EditorShow("着色器变种收集文件")]
public class PackShaderVariants : IPackRule
{
public string GetBundleName(PackRuleData data)

View File

@ -0,0 +1,55 @@
using System;
using System.Reflection;
namespace YooAsset.Editor
{
/// <summary>
/// 编辑器显示名字
/// </summary>
internal sealed class EditorShowAttribute : Attribute
{
public string Name;
public EditorShowAttribute(string name)
{
this.Name = name;
}
}
internal static class YooAssetAttributes
{
/// <summary>
/// 获取 Type 属性
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="type"></param>
/// <returns>可能为空</returns>
internal static T GetAttribute<T>(Type type) where T : Attribute
{
return (T)type.GetCustomAttribute(typeof(T), false);
}
/// <summary>
/// 获取 MethodInfo 属性
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="methodInfo"></param>
/// <returns>可能为空</returns>
internal static T GetAttribute<T>(MethodInfo methodInfo) where T : Attribute
{
return (T)methodInfo.GetCustomAttribute(typeof(T), false);
}
/// <summary>
/// 获取 FieldInfo 属性
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="field"></param>
/// <returns>可能为空</returns>
internal static T GetAttribute<T>(FieldInfo field) where T : Attribute
{
return (T)field.GetCustomAttribute(typeof(T), false);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 92d5f73b21059af43b7f56165b7acd63
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: