AlicizaX/Client/Assets/Books/EditorExtension/ReferenceFinder.md

104 lines
2.5 KiB
Markdown
Raw Normal View History

2026-04-01 13:20:06 +08:00
# 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();
```
## 注意事项
- 大项目建议优先使用缓存。
- 资源大规模变更后建议先清缓存再重新采集。