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

Unity脚本编译正常但运行时修改不生效该如何排查解决?

优先排查Git配置相关问题
  • 检查.gitignore规则与文件变更标记:Unity运行时临时编译的程序集默认存放在Library/ScriptAssemblies/路径,确认新增的Bitbucket仓库.gitignore、全局git配置、子模块.gitignore没有将该路径或对应程序集dll标记为假定不变(assume-unchanged)或跳过工作区(skip-worktree)。可执行以下命令排查标记文件:
    • 排查skip-worktree标记:git ls-files -v | grep ^S
    • 排查assume-unchanged标记:git ls-files -v | grep ^h
      若存在ScriptAssemblies下的dll被标记,执行git update-index --no-skip-worktree <文件路径>或git update-index --no-assume-unchanged <文件路径>解除标记即可。
  • 检查大小写敏感配置一致性:Git的core.ignorecase配置如果和项目所在磁盘的大小写配置不一致,会导致Unity识别到文件修改但重载程序集时读取旧缓存。执行git config core.ignorecase查看当前值:Windows、macOS默认磁盘大小写不敏感,该值应为true;Linux大小写敏感磁盘该值应为false。不匹配的话执行git config core.ignorecase <对应值>修改。
  • 检查子模块权限与锁定:添加到Packages下的子模块如果被设为只读,或Git对子模块文件设置了修改锁定,可能导致Unity编译新程序集被拦截,但预览时读取内存中的修改内容。确认Packages下的子模块文件夹未设为只读,子模块内的脚本文件有正常写入权限。
排查Unity域重载失效问题
  • 核对运行模式重载配置:打开Edit > Preferences > General > Script Changes While Playing,确认未设置为Recompile After Finished Playing;再打开Project Settings > Editor > Enter Play Mode Options,确认Reload Domain选项处于勾选状态,若取消该勾选Unity进入运行模式时不会重新加载新编译的程序集,只会读取缓存版本。
  • 全量清理编译缓存:直接删除项目根目录下的Library文件夹,重启Unity让其重新全量编译所有资源与脚本,排除增量编译缓存异常的问题。
  • 检查Assembly Definition配置:如果你修改的脚本属于自定义Assembly Definition(asmdef),确认该asmdef的Auto Referenced选项已勾选,且没有被其他asmdef错误引用旧程序集路径。如果项目包含Haxe转译逻辑,确认转译生成的C#脚本确实写入到了Assets目录下,而非写入到被Git忽略的路径中。
排查多仓库工作区冲突问题
  • 重新生成解决方案文件:在Unity内执行Assets > Open C# Project重新生成所有.csproj与.sln文件,避免VSCode编辑的是工作区其他仓库的重复同名脚本,而Unity读取的是另一个路径下的旧版本。
  • 排查重复类冲突:你将4个仓库同时加入同一个VSCode工作区,可能存在两个不同路径下有同名同命名空间的脚本,VSCode默认打开的是你自有仓库的版本,但Unity脚本搜索顺序优先读取了Packages下子模块的旧版本。在VSCode中全局搜索你修改的类名,确认工作区不存在重复的同名类即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 02:36:02