资产数据库。Locus 不通过 Unity 编辑器解析资产引用关系,而是直接读取磁盘上的 Unity 序列化文件,扫描 Assets 与 Packages 两个根目录,为每个资产建立节点,并记录资产之间的引用关系。资产搜索、引用分析、资产健康检查都建立在这份索引之上。
工作原理
Unity 为每个资产生成一个.meta 文件,其中的 GUID 是该资产在项目中的唯一身份;场景、Prefab、材质等序列化文件内部通过 GUID 引用其它资产。Locus 解析这些文件,就能还原出「谁引用了谁」的完整关系网。
因为只读磁盘文件,扫描不需要 Unity 编辑器在运行,也不会占用编辑器性能。扫描结果持久化保存在本地:下次打开项目时直接加载已有索引(显示为由持久化索引加载),只对变化部分做校验,无需重新全量扫描。
扫描阶段与进度
首次选择项目时会触发一次全量扫描(安装与配置引导流程中的一步),之后也可随时在「资产」页面点击重新扫描。扫描按五个阶段推进:
目录扫描:遍历Assets与Packages下的文件。.meta 解析:读取每个资产的 GUID 与导入设置。YAML 解析:解析场景、Prefab、ScriptableObject 等序列化内容,提取引用关系。索引写入:把节点与引用写入本地数据库。索引校验:核对索引与磁盘的一致性,补齐差异。
扫描状态卡片显示当前阶段与已完成/总量;会话输入框上方的资产数据库状态指示也会同步显示阶段进度。数据库整体状态分为未索引、扫描中、已索引、扫描失败与需要重新扫描几档;出现需要重新扫描时(例如索引文件失效),页面会提示重扫后才能恢复资产搜索与引用分析。
实时监听
实时监听卡片对应一个文件系统监听器,负责让索引跟上项目变化:
运行中:检测到.meta/.asset等文件改动会自动增量重扫,只处理变化的文件。在 Unity 里导入资源、改引用、挪目录,索引会在几秒内跟上。已停止:仅在手动重扫后刷新。
待处理队列长度与正在处理的文件。队列偶尔堆积属于正常现象(例如批量导入后),处理完即清空。
扫描强度与工作线程
实时监听卡片下方提供两个调节项:
扫描强度:一个从节能到全速的滑杆,控制增量扫描的节流间隔(0 到 1000 毫秒,滑杆右侧读数实时显示当前档位与毫秒数)。全速响应最快但占用更多 CPU,节能适合在意后台开销的大型项目。工作线程:扫描与解析使用的并行线程数。
统计卡片
索引规模:资产数量、引用关系数量、数据库大小与资产大小,反映索引覆盖的整体范围。扫描状态:当前状态徽标、上次扫描时间与耗时,以及上次扫描统计(目录数、YAML 资产、新增节点、新增引用、解析失败)。重新扫描按钮也在这里。实时监听:监听器状态、待处理队列与调节项。资产风险:失效引用、Missing Script、解析失败与 GUID 重复的汇总入口,详见资产健康与风险。