# Unity 的 Library 文件夹可以删除吗

> 用 MangoDisk 比较 Unity 旧项目的 Library 占用，按路径清理缓存，保留资源、配置和内存快照，并了解重新导入的影响。

**可以，但要先保存工作、关闭 Unity 项目，并确认原始资源和配置完整。** 正常情况下，项目里的 `Library` 保存的是 Unity 生成的内部资源数据；删除后，下次打开项目会重新生成，也需要重新导入资源。它适合在整理旧项目时按需清理，不适合每天清空。[Unity 资源导入说明](https://docs.unity3d.com/6000.0/Documentation/Manual/ImportingAssets.html)

如果电脑上留着多个 Unity 项目，用 [MangoDisk](/zh) 的深度清理，可以集中查看已识别项目的产物路径和大小，再选择哪些旧项目的 `Library` 值得清。免费开源，无需注册或登录，扫描在本地完成。

## 用 MangoDisk 比较旧项目的占用

手动清理一个项目并不复杂；项目多了，麻烦的是逐个找文件夹、查看大小，再分清哪些还在开发。MangoDisk 会把识别到的 Unity 产物集中列出来，展开后可以按具体路径选择，不必把所有项目一起清掉。

![MangoDisk Windows 版深度清理界面，按类别查看路径和占用并选择清理内容](https://assets.mangodisk.app/images/screenshots/windows/zh/light-01-deep-cleanup.jpg)

*上图为深度清理界面示例，实际显示的项目取决于扫描结果。*

打开[深度清理](/zh/docs/features/deep-clean)，完成**标准扫描**，在**项目构建产物**中查看 **Unity 构建产物**。项目放在其他磁盘时，可以通过扫描按钮旁的**选择磁盘**加入对应磁盘。

准备清理时：

1. 先按项目路径比较占用，找出暂时不会继续开发的旧项目。
2. 保存场景和代码，停止构建，退出 Unity Editor；确认重要资源、配置和自有修改已备份。
3. 选择**暂不选择**，展开 Unity 条目，只勾选核对过的旧项目 `Library` 路径。
4. 检查所选路径和预计释放空间，再确认清理。

**Unity 条目还可能包含 Temp、Obj、Logs 和 MemoryCaptures，不要为了清 Library 把整组全选。** 内存快照和日志是否还有用，需要单独判断。

Unity 构建产物默认不选中，扫描也不会自动删除。确认执行后，MangoDisk 会永久删除所选内容，不经过回收站或废纸篓；详见[安全清理指南](/zh/docs/safety)。清理前请自行确认 Unity 已退出、构建已停止，不能只依赖清理页面上的提示。

## Library 的位置和空间占用

这里说的 `Library` 在 **Unity 项目根目录**，和 `Assets`、`Packages`、`ProjectSettings` 并列。它不是 Mac 用户目录下的 `~/Library`，不要按名字删除其他位置的同名文件夹。

Unity 会把原始资源转换为适合编辑器和目标平台使用的内部数据，并保存在项目的 `Library` 中。每个项目都有自己的这部分数据，所以即使没有新增多少代码，多个项目留下的缓存也值得检查。

但 `Library` 大并不意味着出了问题。对每天使用的项目，这些数据能避免重复导入；清掉之后，再次打开还会生成。腾出的空间和下一次等待重建的时间，需要一起考虑。

<table>
<thead>
  <tr>
    <th>
      项目情况
    </th>
    
    <th>
      清理建议
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      很久不再打开的练习、演示或旧版本项目
    </td>
    
    <td>
      确认备份后，优先检查 Library 的占用
    </td>
  </tr>
  
  <tr>
    <td>
      近期还要继续开发、测试或出包
    </td>
    
    <td>
      通常先保留，避免反复重新导入
    </td>
  </tr>
  
  <tr>
    <td>
      Library 中存过个人文件或直接改过包源码
    </td>
    
    <td>
      先备份自有内容，不直接按缓存删除
    </td>
  </tr>
</tbody>
</table>

## 哪些文件夹要保留

能重新生成 `Library`，不代表项目根目录下的其他内容也能删除。

<table>
<thead>
  <tr>
    <th>
      内容
    </th>
    
    <th>
      应如何处理
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        Library
      </code>
    </td>
    
    <td>
      关闭项目、确认可重建且没有自有内容后，按需清理
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        Assets
      </code>
      
       和对应的 <code>
        .meta
      </code>
    </td>
    
    <td>
      保留，包含项目资源、脚本及资源标识等数据
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        Packages
      </code>
    </td>
    
    <td>
      保留，包含依赖配置，也可能有嵌入包源码
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        ProjectSettings
      </code>
    </td>
    
    <td>
      保留，包含项目设置
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        Temp
      </code>
      
      、<code>
        Obj
      </code>
    </td>
    
    <td>
      单独确认用途和项目状态，不必随着 Library 一起删除
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        Logs
      </code>
    </td>
    
    <td>
      排查问题时保留；旧日志不等于永远无用
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        MemoryCaptures
      </code>
    </td>
    
    <td>
      保留仍有价值的内存快照，不能当作可自动重建的缓存
    </td>
  </tr>
</tbody>
</table>

`.meta` 文件看起来不起眼，但保存着资源标识和导入相关信息，要和资源一起保留。[Unity 资源元数据说明](https://docs.unity3d.com/6000.0/Documentation/Manual/AssetMetadata.html)

另一个容易漏掉的情况是 **直接修改过 Library/PackageCache 中的包源码**。清理前先保存这些修改；Unity 官方的 URP 修改流程是把包从缓存复制到项目的 `Packages` 中，再修改嵌入包，不要把自有修改只留在缓存里。[Unity 修改 URP 源码说明](https://docs.unity3d.com/6000.0/Documentation/Manual/urp/customize/modify-urp-source-code.html)

`MemoryCaptures` 则是另一类内容。Unity Memory Profiler 会在这里保存采集或导入的内存快照，用来分析和比较当时的内存状态。重新打开项目不会替你重建同一份历史快照。[Memory Profiler 快照说明](https://docs.unity3d.com/Packages/com.unity.memoryprofiler@1.1/manual/snapshot-capture.html)

## 只处理一个项目时也可以手动清理

保存工作、退出 Unity 后，在 Windows 文件资源管理器或 Mac Finder 中打开项目根目录。确认旁边有 `Assets`、`Packages` 和 `ProjectSettings`，再查看 `Library` 的属性或显示简介，判断占用是否值得处理。

完成备份和内容确认后，只移除这个项目的 `Library`，保留其他目录。如果想先保留恢复机会，可以移到回收站或废纸篓；它仍会占用磁盘，之后要回收空间，还需要处理其中的副本。

一个项目用文件管理器就能完成；多个旧项目需要比较时，MangoDisk 的作用是把候选路径和占用集中展示，并让你逐条选择。

如果 MangoDisk 没有列出某个项目，不代表它没有可清理内容。当前 Unity 规则通过 `Assembly-CSharp.csproj`、`Assets` 和 `ProjectSettings` 识别项目，缺少这些标记，或目录不在本次扫描范围内，都可能没有结果。可以先用磁盘空间分析查看具体目录，不必为了让清理工具识别而修改项目。[MangoDisk Unity 清理规则](https://github.com/harry0703/MangoDisk/blob/v1.1.6/src-tauri/crates/mangodisk-core/rules/project-artifacts/unity.toml)

## 清理后 Library 又变大了怎么办

重新打开项目后，Unity 会生成新的 `Library`。这是正常行为：清理移除了之前的缓存，没有改变项目对这些数据的需要。

第一次重新打开可能要花更多时间导入资源。先等导入完成，再检查场景、资源引用和构建情况；不要为了让文件夹一直保持很小而反复清空它，也别把清 Library 当成能修复所有报错的操作。

如果清理后磁盘仍然很满，用 MangoDisk 的[磁盘空间分析](/zh/docs/features/disk-analysis)查看真正的大目录。占用可能来自原始素材、旧安装包或其他工具的构建产物；`Assets` 大时，需要判断哪些素材仍被项目使用，不能套用缓存的清理方式。

其他开发项目可以分别参考 [Gradle 缓存清理](/zh/blog/clear-gradle-cache)和 [Cargo cache 与 target 的区别](/zh/blog/cargo-cache-vs-target-folder)。不同工具的数据用途不同，按实际路径处理。

[下载 MangoDisk](/zh)，先比较旧项目的产物占用，再按路径选择值得清理的 `Library`。正在开发的项目和仍需使用的诊断资料，可以继续保留。

相关阅读：[开发者磁盘清理指南](/zh/blog/topics/developer-cleanup)。
