最近在 Unity 内新增 C# 文件时,发现 VSCode 会提示UnityEngine.UI 找不到引用,但是如果 Unity 将编辑器从 VSCode 改回 VS 后,VSCode 内的引用就奇迹般的正常了
因此使用 Nodejs 监听文件变化查找原因,使用自己写的小工具对比文件差异:
在相关 csproj 文件内搜索 Assembly>false 发现是 VS 打开工程后会很果断地删除下列行:
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
反之,如果 Unity 新增一个 C# 文件,VSCode 就会自动在 csproj 里面加入这行,果然同门师兄弟,竞争很激烈。
回到 csproj 里面,是没有任何 UnityEngine.UI 模块引用的,毫无疑问,是放在 dll 里面了,而再结合上面这行的字面理解,应该就是不到 dll 里面找引用的意思,因此找不到 UnityEngine.UI 也就是顺理成章的事了。
解决方式:
1:vscode 安装1.1.3版本
这个网上搜到很多解决方式是这个,没有具体尝试过,应该可行,大概率是 VSCode 自己修复了对 相关 Unity 引用的正确处理
2:Preferences => externalTools => VS 然后点击任意脚本进入 VS
如果愿意用 VSCode 的话,这种就是让 VS 去改 cpsproj,就是时间太久,知道原因再这么去改就显得对自己的电脑性能很自信
3:手动添加下列引用到 csproj
<Reference Include="UnityEngine.UI">
<HintPath>Library/ScriptAssemblies/UnityEngine.UI.dll</HintPath>
</Reference>
不难得出这种解决方式,不知道有没有副作用
4:删除 csproj 中的 <ReferenceOutputAssembly>false</ReferenceOutputAssembly>