搜索文字颜色

This commit is contained in:
邬春鹏
2025-06-05 09:22:13 +08:00
parent 33ac8556ce
commit 1aecb54964

View File

@@ -27,6 +27,7 @@ namespace YooAsset.Editor
private EViewMode _viewMode; private EViewMode _viewMode;
private string _searchKey; private string _searchKey;
private string _lowerSearchKey;
private ToolbarSearchField _searchField; private ToolbarSearchField _searchField;
@@ -379,6 +380,7 @@ namespace YooAsset.Editor
private void OnSearchFieldValueChanged(ChangeEvent<string> evt) private void OnSearchFieldValueChanged(ChangeEvent<string> evt)
{ {
_searchKey = evt.newValue; _searchKey = evt.newValue;
_lowerSearchKey = evt.newValue.ToLower();
if (string.IsNullOrWhiteSpace(evt.newValue)) if (string.IsNullOrWhiteSpace(evt.newValue))
{ {
@@ -486,6 +488,28 @@ namespace YooAsset.Editor
return ruleDisplayName.ClassName; return ruleDisplayName.ClassName;
} }
private string ConvertText(string str)
{
if (_viewMode == EViewMode.Search)
{
if (str.ToLower().Contains(_lowerSearchKey))
{
int startIndex = str.ToLower().IndexOf(_lowerSearchKey);
while (startIndex >= 0)
{
string before = str.Substring(0, startIndex);
string match = str.Substring(startIndex, _lowerSearchKey.Length);
string after = str.Substring(startIndex + _lowerSearchKey.Length);
str = $"{before}<color=red>{match}</color>{after}";
startIndex = str.ToLower().IndexOf(_lowerSearchKey, startIndex + 20); // 20是<color=red></color>的长度
}
return str;
}
}
return str;
}
// 设置栏相关 // 设置栏相关
private void RefreshSettings() private void RefreshSettings()
{ {
@@ -595,12 +619,10 @@ namespace YooAsset.Editor
{ {
packages = new List<AssetBundleCollectorPackage>(); packages = new List<AssetBundleCollectorPackage>();
var lowerSearchKey = _searchKey.ToLower();
foreach (var package in AssetBundleCollectorSettingData.Setting.Packages) foreach (var package in AssetBundleCollectorSettingData.Setting.Packages)
{ {
//检查packageName //检查packageName
if (package.PackageName.ToLower().Contains(lowerSearchKey)) if (package.PackageName.ToLower().Contains(_lowerSearchKey))
{ {
packages.Add(package); packages.Add(package);
continue; continue;
@@ -609,13 +631,13 @@ namespace YooAsset.Editor
//检查Groups和GroupAssetTags //检查Groups和GroupAssetTags
foreach (var group in package.Groups) foreach (var group in package.Groups)
{ {
if (group.GroupName.ToLower().Contains(lowerSearchKey)) if (group.GroupName.ToLower().Contains(_lowerSearchKey))
{ {
packages.Add(package); packages.Add(package);
break; break;
} }
if (group.AssetTags.ToLower().Contains(lowerSearchKey)) if (group.AssetTags.ToLower().Contains(_lowerSearchKey))
{ {
packages.Add(package); packages.Add(package);
break; break;
@@ -626,13 +648,13 @@ namespace YooAsset.Editor
//检查Collectors和tags //检查Collectors和tags
foreach (var collector in group.Collectors) foreach (var collector in group.Collectors)
{ {
if (collector.CollectPath.ToLower().Contains(lowerSearchKey)) if (collector.CollectPath.ToLower().Contains(_lowerSearchKey))
{ {
needAdd = true; needAdd = true;
break; break;
} }
if (collector.AssetTags.ToLower().Contains(lowerSearchKey)) if (collector.AssetTags.ToLower().Contains(_lowerSearchKey))
{ {
needAdd = true; needAdd = true;
break; break;
@@ -678,9 +700,9 @@ namespace YooAsset.Editor
var textField1 = element.Q<Label>("Label1"); var textField1 = element.Q<Label>("Label1");
if (string.IsNullOrEmpty(package.PackageDesc)) if (string.IsNullOrEmpty(package.PackageDesc))
textField1.text = package.PackageName; textField1.text = ConvertText(package.PackageName);
else else
textField1.text = $"{package.PackageName} ({package.PackageDesc})"; textField1.text = ConvertText($"{package.PackageName} ({package.PackageDesc})");
} }
private void PackageListView_onSelectionChange(IEnumerable<object> objs) private void PackageListView_onSelectionChange(IEnumerable<object> objs)
{ {