Beispiel #1
0
        // showDefinedOnly: 只显示已定义
        // searchCount: 结果数量限制
        private void UpdateSearchResults()
        {
            var keyword                 = _searchKeyword;
            var sliceKeyword            = _searchSliceKeyword;
            var showDefinedOnly         = _showDefinedOnly;
            var useRegexMatch           = _useRegexMatch;
            var showSelectionOnly       = _showSelectionOnly;
            var showStreamingAssetsOnly = _showStreamingAssetsOnly;
            // var searchCount = _data.searchMax;

            Regex nameRegex      = null;
            Regex sliceNameRegex = null;

            if (_useRegexMatch)
            {
                nameRegex      = MakeRegex(keyword);
                sliceNameRegex = MakeRegex(sliceKeyword);
            }

            _searchResults.Clear();
            var selectionSet = new HashSet <string>();

            if (showSelectionOnly)
            {
                for (int i = 0, size = Selection.objects.Length; i < size; i++)
                {
                    var sel       = Selection.objects[i];
                    var assetPath = AssetDatabase.GetAssetPath(sel);
                    if (!string.IsNullOrEmpty(assetPath))
                    {
                        selectionSet.Add(assetPath);
                    }
                }
            }

            _data.ForEachAssetPath((bundleInfo, bundleSplit, bundleSlice, assetPath) =>
            {
                if (!showStreamingAssetsOnly || bundleSlice.streamingAssets)
                {
                    if (!showSelectionOnly || selectionSet.Contains(assetPath))
                    {
                        if (IsStringMatch(nameRegex, keyword, assetPath))
                        {
                            if (IsStringMatch(sliceNameRegex, sliceKeyword, bundleSlice.name))
                            {
                                var attrs = _data.GetAssetPathAttributes(assetPath);
                                if (attrs != null || !showDefinedOnly)
                                {
                                    var result = new SearchResult()
                                    {
                                        bundleInfo  = bundleInfo,
                                        bundleSplit = bundleSplit,
                                        bundleSlice = bundleSlice,
                                        assetPath   = assetPath,
                                    };

                                    _searchResults.Add(result);
                                }
                            }
                        }
                    }
                }
            });
        }