You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何未使用的Asset会导致Unity构建包体积增大?

问题分析与解决方案

你的实验结果说明Unity的资源收集机制把未使用的Asset包含进了构建包,常见原因和对应解决办法如下:

可能的原因

  • 资源放在Resources文件夹下:Unity会强制打包Resources目录下的所有资源,不管是否在场景或代码中引用。
  • 资源被标记为“始终包含”:部分Asset的导入设置里勾选了Always Included in Build,或者被添加到Player Settings的Preloaded Assets列表中,会被强制打包。
  • 隐藏的依赖引用:Unity的依赖分析可能检测到间接引用——比如脚本里用[SerializeField]声明了某个资源变量但没赋值,或者某个配置文件、AssetBundle清单间接引用了这些资源。
  • 构建缓存或Library残留:删除Asset后,Library文件夹里的缓存文件没清理,导致旧资源仍被包含进新构建包。
  • Addressables/AssetBundle配置问题:如果使用了Addressables,开启了Build Content on Player Build且未正确分组,未使用的资源可能被打包进主包;手动打包的AssetBundle产物也可能被误包含。

解决办法

  • 检查并清理Resources目录:把未使用的Asset移出Resources文件夹,只保留确实需要通过Resources.Load加载的资源。
  • 生成未使用资源报告:打开Unity编辑器的Window > Analysis > Unused Assets(不同版本路径可能略有差异),生成报告确认资源状态,同时排查是否有隐藏引用。
  • 取消强制包含设置:
    1. 选中目标Asset,在Inspector面板中取消Always Included in Build(若有该选项);
    2. 打开Edit > Project Settings > Player,在Preloaded Assets列表中移除不需要的资源。
  • 清理缓存后重新构建:删除项目根目录的Library文件夹,重启Unity后重新构建,避免缓存残留。
  • 标记资源为EditorOnly:给确认不需要打包的Asset添加EditorOnly标签,Unity会自动排除这类资源在构建之外。
  • 调整Addressables配置:如果用了Addressables,关闭Build > Build Content on Player Build,并确保未使用的资源被分到单独的分组,不参与主包构建。

内容的提问来源于stack exchange,提问作者KO7T0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 22:32:07