Files
XCEngine/docs/api/XCEngine/Editor/Managers/ProjectManager/RefreshCurrentFolder.md

1.2 KiB

ProjectManager::RefreshCurrentFolder

void RefreshCurrentFolder();

当前行为

这个方法当前不是“只刷新当前目录 children 列表”,而是调用内部 RebuildTreePreservingPath() 重建整棵 Assets 树,然后尽量恢复当前浏览状态。

内部主要流程是:

  1. 记录旧的目录路径栈 m_path
  2. 重新从 <project>/Assets 扫描整棵树
  3. 重新解析旧路径栈,尽量恢复当前面包屑位置
  4. 通过 SyncSelection() 重新校验当前 m_selectedItemPath

保留语义

  • 若原浏览路径中的每一级目录仍然存在,则当前目录会被保留
  • 若中间某一级目录已不存在,则恢复过程会在该层停止
  • 若当前选中项路径仍能在当前目录项中重新解析,选择会保留
  • 若当前选中项已不存在,则选择会被清空

这也是当前刷新后即使目录项顺序变化,选择仍可恢复的原因。

失败语义

当前实现把异常吞掉,因此:

  • 刷新失败时不会抛异常
  • 也不会提供错误返回值
  • 上层看到的通常是“保持旧状态”

相关文档