mirror of
https://github.com/tuyoogame/YooAsset.git
synced 2026-06-29 18:13:43 +00:00
Compare commits
13 Commits
3.0.2-beta
...
ae087453d9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ae087453d9 | ||
|
|
31c79f3f84 | ||
|
|
4293d70f85 | ||
|
|
6f5bc1b628 | ||
|
|
453cb26500 | ||
|
|
f35248c119 | ||
|
|
830eb7c460 | ||
|
|
ce4a00ef7c | ||
|
|
986a31cae2 | ||
|
|
1aecb54964 | ||
|
|
33ac8556ce | ||
|
|
517f133b21 | ||
|
|
517830dbef |
@@ -14,10 +14,15 @@ namespace YooAsset.Editor
|
||||
[MenuItem("YooAsset/AssetBundle Collector", false, 101)]
|
||||
public static void OpenWindow()
|
||||
{
|
||||
AssetBundleCollectorWindow window = GetWindow<AssetBundleCollectorWindow>("AssetBundle Collector", true, WindowsDefine.DockedWindowTypes);
|
||||
AssetBundleCollectorWindow window =
|
||||
GetWindow<AssetBundleCollectorWindow>("AssetBundle Collector", true, WindowsDefine.DockedWindowTypes);
|
||||
window.minSize = new Vector2(800, 600);
|
||||
}
|
||||
|
||||
private string _lowerSearchKey = string.Empty;
|
||||
|
||||
private ToolbarSearchField _searchField;
|
||||
|
||||
private Button _saveButton;
|
||||
private List<string> _collectorTypeList;
|
||||
private List<RuleDisplayName> _activeRuleList;
|
||||
@@ -62,8 +67,7 @@ namespace YooAsset.Editor
|
||||
private int _lastModifyGroupIndex = 0;
|
||||
private bool _showGlobalSettings = false;
|
||||
private bool _showPackageSettings = false;
|
||||
|
||||
|
||||
|
||||
public void CreateGUI()
|
||||
{
|
||||
try
|
||||
@@ -89,6 +93,9 @@ namespace YooAsset.Editor
|
||||
|
||||
visualAsset.CloneTree(root);
|
||||
|
||||
_searchField = root.Q<ToolbarSearchField>("SearchField");
|
||||
_searchField.RegisterValueChangedCallback(OnSearchFieldValueChanged);
|
||||
|
||||
// 警示栏
|
||||
_helpBoxContainer = root.Q("HelpBoxContainer");
|
||||
|
||||
@@ -358,6 +365,14 @@ namespace YooAsset.Editor
|
||||
Debug.LogError(e.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
private void OnSearchFieldValueChanged(ChangeEvent<string> evt)
|
||||
{
|
||||
_lowerSearchKey = evt.newValue.ToLower();
|
||||
|
||||
RefreshWindow();
|
||||
}
|
||||
|
||||
public void OnEnable()
|
||||
{
|
||||
Undo.undoRedoPerformed += RefreshWindow;
|
||||
@@ -400,6 +415,7 @@ namespace YooAsset.Editor
|
||||
FillPackageViewData();
|
||||
RefreshSettings();
|
||||
}
|
||||
|
||||
private void FixBtn_clicked()
|
||||
{
|
||||
AssetBundleCollectorSettingData.FixFile();
|
||||
@@ -450,6 +466,18 @@ namespace YooAsset.Editor
|
||||
else
|
||||
return ruleDisplayName.ClassName;
|
||||
}
|
||||
|
||||
private void ShowSearchBorder(VisualElement element)
|
||||
{
|
||||
element.style.borderBottomColor = new Color(0.7f,0,0,1);
|
||||
element.style.borderBottomWidth = 1;
|
||||
}
|
||||
|
||||
private void ClearBorder(VisualElement element)
|
||||
{
|
||||
element.style.borderBottomColor = Color.white;
|
||||
element.style.borderBottomWidth = 0;
|
||||
}
|
||||
|
||||
// 设置栏相关
|
||||
private void RefreshSettings()
|
||||
@@ -516,6 +544,13 @@ namespace YooAsset.Editor
|
||||
#if UNITY_2020_3_OR_NEWER
|
||||
_helpBoxContainer.Clear();
|
||||
|
||||
if (string.IsNullOrWhiteSpace(_lowerSearchKey) == false)
|
||||
{
|
||||
string tips = "Currently in search mode";
|
||||
var helpBox = new HelpBox(tips, HelpBoxMessageType.Error);
|
||||
_helpBoxContainer.Add(helpBox);
|
||||
}
|
||||
|
||||
if (_enableAddressableToogle.value && _locationToLowerToogle.value)
|
||||
{
|
||||
string tips = "The [Enable Addressable] option and [Location To Lower] option cannot be enabled at the same time.";
|
||||
@@ -542,7 +577,69 @@ namespace YooAsset.Editor
|
||||
{
|
||||
_packageListView.Clear();
|
||||
_packageListView.ClearSelection();
|
||||
_packageListView.itemsSource = AssetBundleCollectorSettingData.Setting.Packages;
|
||||
|
||||
List<AssetBundleCollectorPackage> packages = null;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(_lowerSearchKey))
|
||||
{
|
||||
packages = AssetBundleCollectorSettingData.Setting.Packages;
|
||||
}
|
||||
else
|
||||
{
|
||||
packages = new List<AssetBundleCollectorPackage>();
|
||||
|
||||
foreach (var package in AssetBundleCollectorSettingData.Setting.Packages)
|
||||
{
|
||||
//检查packageName
|
||||
if (package.PackageName.ToLower().Contains(_lowerSearchKey))
|
||||
{
|
||||
packages.Add(package);
|
||||
continue;
|
||||
}
|
||||
|
||||
//检查Groups和GroupAssetTags
|
||||
foreach (var group in package.Groups)
|
||||
{
|
||||
if (group.GroupName.ToLower().Contains(_lowerSearchKey))
|
||||
{
|
||||
packages.Add(package);
|
||||
break;
|
||||
}
|
||||
|
||||
if (group.AssetTags.ToLower().Contains(_lowerSearchKey))
|
||||
{
|
||||
packages.Add(package);
|
||||
break;
|
||||
}
|
||||
|
||||
var needAdd = false;
|
||||
|
||||
//检查Collectors和tags
|
||||
foreach (var collector in group.Collectors)
|
||||
{
|
||||
if (collector.CollectPath.ToLower().Contains(_lowerSearchKey))
|
||||
{
|
||||
needAdd = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (collector.AssetTags.ToLower().Contains(_lowerSearchKey))
|
||||
{
|
||||
needAdd = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (needAdd)
|
||||
{
|
||||
packages.Add(package);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_packageListView.itemsSource = packages;
|
||||
_packageListView.Rebuild();
|
||||
|
||||
if (_lastModifyPackageIndex >= 0 && _lastModifyPackageIndex < _packageListView.itemsSource.Count)
|
||||
@@ -550,6 +647,7 @@ namespace YooAsset.Editor
|
||||
_packageListView.selectedIndex = _lastModifyPackageIndex;
|
||||
}
|
||||
}
|
||||
|
||||
private VisualElement MakePackageListViewItem()
|
||||
{
|
||||
VisualElement element = new VisualElement();
|
||||
@@ -567,13 +665,26 @@ namespace YooAsset.Editor
|
||||
}
|
||||
private void BindPackageListViewItem(VisualElement element, int index)
|
||||
{
|
||||
var package = AssetBundleCollectorSettingData.Setting.Packages[index];
|
||||
var package = _packageListView.itemsSource[index] as AssetBundleCollectorPackage;
|
||||
|
||||
var textField1 = element.Q<Label>("Label1");
|
||||
if (string.IsNullOrEmpty(package.PackageDesc))
|
||||
textField1.text = package.PackageName;
|
||||
else
|
||||
textField1.text = $"{package.PackageName} ({package.PackageDesc})";
|
||||
textField1.text = package.PackageName;
|
||||
|
||||
if(string.IsNullOrWhiteSpace(_lowerSearchKey) == false)
|
||||
{
|
||||
if(package.PackageName.ToLower().Contains(_lowerSearchKey))
|
||||
{
|
||||
ShowSearchBorder(element);
|
||||
}
|
||||
else
|
||||
{
|
||||
ClearBorder(element);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ClearBorder(element);
|
||||
}
|
||||
}
|
||||
private void PackageListView_onSelectionChange(IEnumerable<object> objs)
|
||||
{
|
||||
@@ -620,9 +731,48 @@ namespace YooAsset.Editor
|
||||
if (selectPackage == null)
|
||||
return;
|
||||
|
||||
List<AssetBundleCollectorGroup> displayGroupList = null;
|
||||
|
||||
if(string.IsNullOrWhiteSpace(_lowerSearchKey) == false)
|
||||
{
|
||||
displayGroupList = new List<AssetBundleCollectorGroup>();
|
||||
foreach(var group in selectPackage.Groups)
|
||||
{
|
||||
if(group.GroupName.ToLower().Contains(_lowerSearchKey))
|
||||
{
|
||||
displayGroupList.Add(group);
|
||||
}
|
||||
else if(group.AssetTags.ToLower().Contains(_lowerSearchKey))
|
||||
{
|
||||
displayGroupList.Add(group);
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach(var collector in group.Collectors)
|
||||
{
|
||||
if(collector.CollectPath.ToLower().Contains(_lowerSearchKey))
|
||||
{
|
||||
displayGroupList.Add(group);
|
||||
break;
|
||||
}
|
||||
|
||||
if(collector.AssetTags.ToLower().Contains(_lowerSearchKey))
|
||||
{
|
||||
displayGroupList.Add(group);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
displayGroupList = selectPackage.Groups;
|
||||
}
|
||||
|
||||
_groupListView.Clear();
|
||||
_groupListView.ClearSelection();
|
||||
_groupListView.itemsSource = selectPackage.Groups;
|
||||
_groupListView.itemsSource = displayGroupList;
|
||||
_groupListView.Rebuild();
|
||||
|
||||
if (_lastModifyGroupIndex >= 0 && _lastModifyGroupIndex < _groupListView.itemsSource.Count)
|
||||
@@ -651,13 +801,26 @@ namespace YooAsset.Editor
|
||||
if (selectPackage == null)
|
||||
return;
|
||||
|
||||
var group = selectPackage.Groups[index];
|
||||
var group = _groupListView.itemsSource[index] as AssetBundleCollectorGroup;
|
||||
|
||||
var textField1 = element.Q<Label>("Label1");
|
||||
if (string.IsNullOrEmpty(group.GroupDesc))
|
||||
textField1.text = group.GroupName;
|
||||
else
|
||||
textField1.text = $"{group.GroupName} ({group.GroupDesc})";
|
||||
textField1.text = group.GroupName;
|
||||
|
||||
if(string.IsNullOrWhiteSpace(_lowerSearchKey) == false)
|
||||
{
|
||||
if(group.GroupName.ToLower().Contains(_lowerSearchKey))
|
||||
{
|
||||
ShowSearchBorder(element);
|
||||
}
|
||||
else
|
||||
{
|
||||
ClearBorder(element);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ClearBorder(element);
|
||||
}
|
||||
|
||||
// 激活状态
|
||||
IActiveRule activeRule = AssetBundleCollectorSettingData.GetActiveRuleInstance(group.ActiveRuleName);
|
||||
@@ -679,8 +842,23 @@ namespace YooAsset.Editor
|
||||
_groupNameTxt.SetValueWithoutNotify(selectGroup.GroupName);
|
||||
_groupDescTxt.SetValueWithoutNotify(selectGroup.GroupDesc);
|
||||
_groupTagsTxt.SetValueWithoutNotify(selectGroup.AssetTags);
|
||||
|
||||
FillCollectorViewData();
|
||||
|
||||
if(string.IsNullOrWhiteSpace(_lowerSearchKey) == false)
|
||||
{
|
||||
if(selectGroup.AssetTags.ToLower().Contains(_lowerSearchKey))
|
||||
{
|
||||
ShowSearchBorder(_groupTagsTxt);
|
||||
}
|
||||
else
|
||||
{
|
||||
ClearBorder(_groupTagsTxt);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ClearBorder(_groupTagsTxt);
|
||||
}
|
||||
FillCollectorViewData();
|
||||
}
|
||||
private void AddGroupBtn_clicked()
|
||||
{
|
||||
@@ -718,6 +896,19 @@ namespace YooAsset.Editor
|
||||
_collectorScrollView.Clear();
|
||||
for (int i = 0; i < selectGroup.Collectors.Count; i++)
|
||||
{
|
||||
if(string.IsNullOrWhiteSpace(_lowerSearchKey) == false)
|
||||
{
|
||||
if(selectGroup.Collectors[i].CollectPath.ToLower().Contains(_lowerSearchKey))
|
||||
{
|
||||
}
|
||||
else if(selectGroup.Collectors[i].AssetTags.ToLower().Contains(_lowerSearchKey))
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
VisualElement element = MakeCollectorListViewItem();
|
||||
BindCollectorListViewItem(element, i);
|
||||
_collectorScrollView.Add(element);
|
||||
@@ -881,11 +1072,45 @@ namespace YooAsset.Editor
|
||||
// Collector Path
|
||||
var objectField1 = element.Q<ObjectField>("ObjectField1");
|
||||
objectField1.SetValueWithoutNotify(collectObject);
|
||||
objectField1.RegisterValueChangedCallback(evt =>
|
||||
|
||||
if (string.IsNullOrWhiteSpace(_lowerSearchKey) == false)
|
||||
{
|
||||
if (collector.CollectPath.ToLower().Contains(_lowerSearchKey))
|
||||
{
|
||||
ShowSearchBorder(objectField1);
|
||||
}
|
||||
else
|
||||
{
|
||||
ClearBorder(objectField1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ClearBorder(objectField1);
|
||||
}
|
||||
|
||||
objectField1.RegisterValueChangedCallback(evt =>
|
||||
{
|
||||
collector.CollectPath = AssetDatabase.GetAssetPath(evt.newValue);
|
||||
collector.CollectorGUID = AssetDatabase.AssetPathToGUID(collector.CollectPath);
|
||||
objectField1.value.name = collector.CollectPath;
|
||||
|
||||
if(string.IsNullOrWhiteSpace(_lowerSearchKey) == false)
|
||||
{
|
||||
if(collector.CollectPath.ToLower().Contains(_lowerSearchKey))
|
||||
{
|
||||
ShowSearchBorder(objectField1);
|
||||
}
|
||||
else
|
||||
{
|
||||
ClearBorder(objectField1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ClearBorder(objectField1);
|
||||
}
|
||||
|
||||
AssetBundleCollectorSettingData.ModifyCollector(selectGroup, collector);
|
||||
if (foldout.value)
|
||||
{
|
||||
@@ -970,7 +1195,22 @@ namespace YooAsset.Editor
|
||||
|
||||
// Tags
|
||||
var textFiled1 = element.Q<TextField>("TextField1");
|
||||
textFiled1.SetValueWithoutNotify(collector.AssetTags);
|
||||
if(string.IsNullOrWhiteSpace(_lowerSearchKey) == false)
|
||||
{
|
||||
if(collector.AssetTags.ToLower().Contains(_lowerSearchKey))
|
||||
{
|
||||
ShowSearchBorder(textFiled1);
|
||||
}
|
||||
else
|
||||
{
|
||||
ClearBorder(textFiled1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ClearBorder(textFiled1);
|
||||
}
|
||||
textFiled1.SetValueWithoutNotify(collector.AssetTags);
|
||||
textFiled1.RegisterValueChangedCallback(evt =>
|
||||
{
|
||||
collector.AssetTags = evt.newValue;
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
<ui:Button text="Export" display-tooltip-when-elided="true" name="ExportButton" style="width: 50px; background-color: rgb(56, 147, 58);" />
|
||||
<ui:Button text="Import" display-tooltip-when-elided="true" name="ImportButton" style="width: 50px; background-color: rgb(56, 147, 58);" />
|
||||
<ui:Button text="Fix" display-tooltip-when-elided="true" name="FixButton" style="width: 50px; background-color: rgb(56, 147, 58);" />
|
||||
<uie:ToolbarSearchField name="SearchField" />
|
||||
</uie:Toolbar>
|
||||
<ui:VisualElement name="PublicContainer" style="background-color: rgb(79, 79, 79); border-left-width: 5px; border-right-width: 5px; border-top-width: 5px; border-bottom-width: 5px;">
|
||||
<ui:VisualElement name="HelpBoxContainer" style="flex-grow: 1;" />
|
||||
@@ -28,7 +29,7 @@
|
||||
<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;">
|
||||
<ui:Label text="Packages" display-tooltip-when-elided="true" name="PackageTitle" style="background-color: rgb(89, 89, 89); -unity-text-align: upper-center; -unity-font-style: bold; border-left-width: 5px; border-right-width: 5px; border-top-width: 5px; border-bottom-width: 5px; font-size: 12px;" />
|
||||
<ui:ListView focusable="true" name="PackageListView" item-height="20" virtualization-method="DynamicHeight" reorderable="true" reorder-mode="Animated" style="flex-grow: 1;" />
|
||||
<ui:ListView focusable="true" name="PackageListView" virtualization-method="DynamicHeight" reorderable="true" reorder-mode="Animated" fixed-item-height="20" style="flex-grow: 1;" />
|
||||
<ui:VisualElement name="PackageAddContainer" style="height: 20px; flex-direction: row; justify-content: center;">
|
||||
<ui:Button text=" - " display-tooltip-when-elided="true" name="RemoveBtn" />
|
||||
<ui:Button text=" + " display-tooltip-when-elided="true" name="AddBtn" />
|
||||
@@ -38,7 +39,7 @@
|
||||
<ui:Label text="Groups" display-tooltip-when-elided="true" name="GroupTitle" style="background-color: rgb(89, 89, 89); -unity-text-align: upper-center; -unity-font-style: bold; border-left-width: 5px; border-right-width: 5px; border-top-width: 5px; border-bottom-width: 5px; font-size: 12px;" />
|
||||
<ui:TextField picking-mode="Ignore" label="Package Name" name="PackageName" style="flex-direction: column;" />
|
||||
<ui:TextField picking-mode="Ignore" label="Package Desc" name="PackageDesc" style="flex-direction: column;" />
|
||||
<ui:ListView focusable="true" name="GroupListView" item-height="20" virtualization-method="DynamicHeight" reorderable="true" reorder-mode="Animated" style="flex-grow: 1;" />
|
||||
<ui:ListView focusable="true" name="GroupListView" virtualization-method="DynamicHeight" reorderable="true" reorder-mode="Animated" fixed-item-height="20" style="flex-grow: 1;" />
|
||||
<ui:VisualElement name="GroupAddContainer" style="height: 20px; flex-direction: row; justify-content: center;">
|
||||
<ui:Button text=" - " display-tooltip-when-elided="true" name="RemoveBtn" />
|
||||
<ui:Button text=" + " display-tooltip-when-elided="true" name="AddBtn" />
|
||||
@@ -49,7 +50,7 @@
|
||||
<ui:VisualElement name="ActiveRuleContainer" style="height: 20px;" />
|
||||
<ui:TextField picking-mode="Ignore" label="Group Name" name="GroupName" />
|
||||
<ui:TextField picking-mode="Ignore" label="Group Desc" name="GroupDesc" />
|
||||
<ui:TextField picking-mode="Ignore" label="Asset Tags" name="GroupTags" />
|
||||
<ui:TextField picking-mode="Ignore" label="Asset Tags" name="GroupTags" style="border-left-color: rgb(255, 255, 255); border-right-color: rgb(255, 255, 255); border-top-color: rgb(255, 255, 255); border-bottom-color: rgb(255, 255, 255); border-top-width: 0; border-right-width: 0; border-bottom-width: 0; border-left-width: 0; border-top-left-radius: 0; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 0;" />
|
||||
<ui:VisualElement name="CollectorAddContainer" style="height: 20px; flex-direction: row-reverse;">
|
||||
<ui:Button text="[ + ]" display-tooltip-when-elided="true" name="AddBtn" />
|
||||
</ui:VisualElement>
|
||||
|
||||
Reference in New Issue
Block a user