# EditorExtension ReferenceFinder 引用分析模块手册 ## 模块概述 `ReferenceFinder` 用于分析项目资源的依赖与反向引用关系,支持缓存、树状展示和排序。 ## 适用场景 - 查询资源被谁引用。 - 清理无用资源前做依赖确认。 - 排查深层依赖链和循环引用风险。 ## 快速上手 ```csharp using TEngine.Editor; ResourceReferenceInfo.FindRef(); ``` ## 模块结构 - `ResourceReferenceInfo`:入口与界面层。 - `ReferenceFinderData`:采集、缓存、状态管理。 - `AssetTreeView`:树状显示。 - `SortHelper`:排序逻辑。 ## 可调用 API ### 类型:`TEngine.Editor.ReferenceFinderData` 源码:`Packages/com.alicizax.unity.editor.extension/Editor/ReferenceFinder/ReferenceFinderData.cs` #### 公开成员 - `AssetState` - `MinThreadCount` - `allAssets` - `assetDict` - `CollectDependenciesInfo()` - `ReadAssetInfo()` - `GetAsset(string dataPath, string assetPath)` - `ReadFromCache()` - `UpdateAssetState(string guid)` - `GetInfoByState(AssetState state)` - `ClearCache()` - `GetRefCount(AssetDescription desc, AssetDescription parentDesc)` #### `AssetDescription` 字段 - `assetDependencyHashString` - `dependencies` - `name` - `path` - `references` - `state` ### 类型:`TEngine.Editor.ResourceReferenceInfo` 源码:`Packages/com.alicizax.unity.editor.extension/Editor/ReferenceFinder/ResourceReferenceInfo.cs` #### 公开成员 - `Data` - `needUpdateAssetTree` - `needUpdateState` - `selectedAssetGuid` - `mAssetTreeView` - `FindRef()` - `DrawOptionBar()` ### 类型:`AssetTreeView` - `AssetTreeView(TreeViewState state, MultiColumnHeader multicolumnHeader)` - `SortExpandItem()` - `CreateDefaultMultiColumnHeaderState(float treeViewWidth, bool isDepend)` ### 类型:`ClickColumn` - `SortInColumn` - `SortWithIndex` - `ClickColumn(MultiColumnHeaderState state)` - `SortByName()` - `SortByPath()` ### 类型:`DragAreaGetObject` - `GetObjects(string meg = null)` ### 类型:`SortHelper` - `Init()` - `ChangeSortType(...)` - `SortByName()` - `SortByPath()` - `SortChild(...)` - `NormalSort(...)` - `FastSort(...)` - `CompareWithName(...)` - `CompareWithNameDesc(...)` - `CompareWithPath(...)` - `CompareWithPathDesc(...)` ### 其他公开类型 - `ListInfo` - `SortType` - `SortConfig` ## 示例 ```csharp var data = new TEngine.Editor.ReferenceFinderData(); data.CollectDependenciesInfo(); ``` ## 注意事项 - 大项目建议优先使用缓存。 - 资源大规模变更后建议先清缓存再重新采集。