AlicizaX/Client/Assets/Books/EditorExtension/ReferenceFinder.md
2026-04-01 13:20:06 +08:00

2.5 KiB

EditorExtension ReferenceFinder 引用分析模块手册

模块概述

ReferenceFinder 用于分析项目资源的依赖与反向引用关系,支持缓存、树状展示和排序。

适用场景

  • 查询资源被谁引用。
  • 清理无用资源前做依赖确认。
  • 排查深层依赖链和循环引用风险。

快速上手

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

示例

var data = new TEngine.Editor.ReferenceFinderData();
data.CollectDependenciesInfo();

注意事项

  • 大项目建议优先使用缓存。
  • 资源大规模变更后建议先清缓存再重新采集。