最近在 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>
