簡體   English   中英

在 Visual Studio 中編輯的 Unity 腳本不提供自動完成功能

[英]Unity Scripts edited in Visual studio don't provide autocomplete

當我想編輯 C# Unity 腳本時,它們會在 Visual Studio 中打開。 它應該為所有與 Unity 相關的代碼提供自動完成功能,但它不起作用。

在這里您可以看到缺少的功能:

缺少自動完成功能的視頻

如圖所示, transform對象沒有打開自動完成菜單。

統一版本:5.5.2f1
視覺工作室 2015
已安裝 Visual Studio Tools for Unity

沒有自動完成,因為腳本說“雜項文件”而不是項目名稱。 看一下來自您問題中的視頻的下圖:

在此處輸入圖像描述

出現“雜項文件”消息的原因有很多:

  1. 當您從另一個文件夾打開 Unity C# 文件而不是從 Unity 編輯器打開它時,可能會發生這種情況。

  2. 這也可能發生,因為 Unity 在 Visual Studio 仍處於打開狀態時崩潰,因此損壞了一些文件。

  3. 這可能是因為 Unity 已關閉然后重新打開但不再連接到 Visual Studio。 打開 Visual Studio 時,您會看到“雜項文件”並且沒有自動完成功能。

  4. 當未安裝Visual Studio Tools for unity時,可能會發生這種情況。

  5. 當您從 Unity 創建腳本時,然后在 Unity 完成處理它之前或在圓形圖標動畫完成動畫之前快速打開它。


大多數情況下,重新啟動 Unity 和 Visual Studio 應該可以解決此問題。

我不知道是哪一個導致了問題,但我將介紹最有可能解決此問題的解決方案。

修復第 1 部分

  1. 從此鏈接下載並安裝Visual Studio Tools for unity 在 Unity 和 Visual Studio 都關閉時執行此操作。

  2. 在 Unity Editor 中,轉到EditPreferences ... → External Tools External Script Editor下拉菜單中,將其更改為Visual Studio 2015

    在此處輸入圖像描述


修復第 2 部分

如果新創建的 C# 文件顯示為Miscellaneous ,請按照以下說明進行操作:

  1. 在 Visual Studio 中,轉到ToolsOptions...Tools for UnityMiscellaneous 顯示連接圖標下,將其設置為true ,然后重新啟動 Visual Studio。

    在此處輸入圖像描述

  2. 重新啟動時,連接圖標現在應該在 Visual Studio 中可用。 單擊它,然后選擇要連接的 Unity 實例。 紅色的“x”圖標現在應該變成棕色的復選標記圖標。 現在,當您在 Unity 中創建一個新的 C# 文件時,它應該打開而不說Miscellaneous

    在此處輸入圖像描述


修復第 3 部分

還沒修好?

重新導入項目,然后打開 C# 項目。

  1. 關閉 Visual Studio。

  2. 在 Unity 中,通過轉到AssetsReimport All重新導入項目。

    在此處輸入圖像描述

  3. 現在,通過轉到AssetsOpen C# Project在 Visual Studio 中打開項目。 這將重新加載項目並修復可能的解決方案文件問題。

    在此處輸入圖像描述


修復第 4 部分

還沒修好?

分別修復每個 C# 文件。

  1. 單擊顯示所有文件圖標。

    在此處輸入圖像描述

  2. 選擇不自動完成的腳本,然后右鍵單擊並選擇Include In Project

    在此處輸入圖像描述


修復第 5 部分

還沒修好?

這個特殊的解決方案似乎對多人有效,這要歸功於 chrisvarnz

  1. 關閉 Visual Studio

  2. 轉到您的項目目錄並刪除所有生成的 Visual Studio 文件。

    這些是要刪除的文件擴展名:

    • .csproj
    • .user
    • .sln

    例子:

    假設您的項目的名稱稱為Target_Shoot ,這些是要刪除的文件應如下所示:

    • Target_Shoot.csproj
    • Target_Shoot.Editor.csproj
    • Target_Shoot.Editor.csproj.user
    • Target_Shoot.Player.csproj
    • Target_Shoot.Player.csproj.user
    • Target_Shoot.sln

    不要刪除任何其他內容。

  3. 再次從 Unity雙擊腳本,它應該會生成新的 Visual Studio 文件,然后打開 Visual Studio。 這可能會解決您的問題。


修復第 6 部分

如果不起作用,請檢查您是否遇到錯誤:

未找到“GetReferenceNearestTargetFrameworkTask”任務

  1. 這里安裝Nuget PackageManager

  2. 重新啟動 Visual Studio。

有關更多信息,請參閱答案。


修復第 7 部分

確保所有項目都已加載。 在解決方案資源管理器中,它應該告訴您 # of # 個項目。 如果未顯示所有項目,請右鍵單擊“解決方案(# of # 個項目)”,然后單擊“加載項目”。

嘗試這個,

  1. 在 Unity 編輯器中轉到菜單,單擊編輯 -> 首選項 -> 外部工具 -> 外部腳本編輯器。 將其設置為 Visual Studio(您安裝的 VS 版本)。

  2. 現在在菜單欄中轉到編輯 -> 項目設置 -> 播放器設置 -> 其他設置 -> 在配置下 -> 檢查 API 兼容性級別 -> 將其更改為您安裝的 .Net 版本。 就我而言,我將其設置為 .Net 4.x

現在如果 Visual Studio 已經在運行,請轉到 Visual Studio,它會要求重新加載項目。 重新加載項目。 檢查它是否有效,如果沒有關閉 Visual Studio。 現在從 Unity Editor 中打開 cs 文件,現在它應該可以工作了。

我找到了另一種以更方便的方式解決此問題的方法:

  1. 在解決方案資源管理器中選擇損壞的文件。
  2. 打開其屬性。
  3. 將字段“構建操作”從“編譯”切換到“無”。
  4. 然后將其切換回“編譯”。

這將以某種方式終止 Unity 和 Visual Studio 之間的同步。

下次 Visual Studio 將重新加載項目時,它會提示警告。 只需點擊“丟棄”即可。

如果您已完成上述所有操作但仍無法正常工作,請嘗試以下操作: 注意:您應該已更新 VS。 來自視覺工作室的屏幕截圖

轉到 Unity > 編輯 > 首選項 > 外部工具 > 外部腳本編輯器。 統一截圖 不知何故,我沒有為外部腳本編輯器選擇“visual studio”,它不起作用。 一旦我選擇了這個並雙擊了統一的 c# 文件,它就開始工作了。

我希望它也能幫助你。

在 Visual Studio 中卸載並重新加載項目:

  • 解決方案資源管理器中右鍵單擊您的項目
  • 選擇卸載項目
  • 選擇重新加載項目

固定的!

我發現這個解決方案效果最好(最簡單),多次遇到問題。

資料來源: https ://alexdunn.org/2017/04/26/xamarin-tips-fixing-the-highlighting-drop-in-your-xamarin-android-projects/

這個頁面幫助我解決了這個問題。

修復 Unity 與 Visual Studio 斷開連接的問題

在此處輸入圖像描述

在 Unity 編輯器中,選擇編輯 > 首選項菜單。

選擇左側的外部工具選項卡。

對於外部腳本編輯器,選擇您擁有的 Visual Studio 版本。

點擊重新生成文件

你完成了

  1. 在 Visual Studio 中選擇項目
  2. 點擊“刷新”按鈕

在此處輸入圖像描述

我今天使用 Visual Studio 2017 15.4.5 和 Unity 2017 遇到了同樣的問題。

我可以通過右鍵單擊 Visual Studio 中的項目並將目標框架從 3.5 更改為 4.5 來解決此問題。

希望這可以幫助其他類似情況的人。

兩種備選方案:

修復 1

@singleton 向我指出了這個方向。 與其在 Visual Studio 中更改目標,不如在 Unity 中更改它,因為項目是自動生成的。

首先刪除自動生成的 Visual Studio 文件: .csproj .user .sln

然后從 Unity 中轉到 PlayerSettings 並在“其他設置”下將“腳本運行時版本”從 Stable 3.5 更改為 Experimental 4.6。

但是,這並沒有為我解決問題。

修復 2

我注意到所有對 Unity 相關代碼的引用都標有黃色警告。 檢查您的錯誤日志,看看是否是這種情況。 特別是看看你是否收到以下錯誤:getreferenceNearestTargetframeworkTask

如果是這樣,請嘗試:再次啟動 Visual Studio 安裝程序。

在 Build Tools 2017 上,單擊 Modify,

確保勾選“Nuget 目標和構建任務”。 如果您單擊通用 Windows 平台開發,這應該會被勾選。

使用 Visual Studio Community 2019 和 Unity 2019.3 更新 2020:

  1. 以管理員身份打開 Visual Studio Installer,選擇修改當前安裝並添加“Game development for Unity”

  2. 如果您現在在 Unity 中添加一個新的 c# 腳本,並使用 Visual Studio (自動)打開它,它不會在窗口頂部描述為“Miscellaneous”,而是使用“Assembly-CSharp”,並且自動完成功能有效。

我通過從 Visual Studio 本身而不是統一編輯器創建 .cs 文件找到了我的解決方案

  • 右鍵單擊解決方案資源管理器中的項目文件夾
  • 添加 > 新項目
  • 在右上角的搜索字段中輸入“unity”
  • 選擇“CSharp MonoBehaviour”
  • 在底部命名您的腳本,然后單擊添加

就我而言,我的 PC 上沒有安裝正確的 .net 版本。 我在我的電腦上安裝了 .net 3.5,這對我有用。

對於 Windows 或 macOS:

下載/安裝Visual Studio IDE(使用 Unity 工具)

安裝時,請確保包括安裝

使用 Unity 進行游戲開發

在此處輸入圖像描述

然后使用 Unity(您可以雙擊您的 C# 文件之一),打開一個新的 C# 項目,Visual Studio IDE 應該以您的新項目結構打開。

在此處輸入圖像描述

從那里,您應該能夠看到您要查找的內容。

例如:

在此處輸入圖像描述

在此處輸入圖像描述

對於 Linux(建議):

試試Monodevelop - Additional Information ,它提供代碼完成/提示。

我的自動完成功能也沒有工作,因為沒有安裝Visual Studio Tools for Unity 因此,安裝后,請刪除自動生成的 Visual Studio 文件。 其他人說你再次打開文件,問題就解決了,但事實並非如此。

訣竅是:您需要通過右鍵單擊從 Unity 打開 C# 文件,然后單擊“打開 C# 項目”,而不是通常雙擊該文件。

我面臨的問題是 C# 項目的目標是不同的 .NET Framework (4.7.2),而 Unity 項目的目標不同 (.NET 3.5)。

我通過將 Unity 中的目標更改為 -

文件 -> 構建設置 -> 播放器設置 -> 其他設置 -> API 兼容級別:將其設置為您已經安裝的 .NET 版本( 在此處檢查您的 .NET 版本)。 就我而言,它是 4.x

此后,Visual Studio 完美運行,自動更正也得到修復。

嘗試按Ctrl + Alt + Space (在建議和標准完成模式之間切換)

出於某種奇怪的原因,“使用 Unity 進行游戲開發”工具可能會在 Visual Studio 中被禁用。

要解決這個..

  1. 打開 Visual Studio
  2. 轉到擴展→“管理擴展”→已安裝
  3. 查找“適用於 Unity 的 Visual Studio 2019 工具”
  4. 如果已禁用,請啟用它
  5. 重啟VS

感謝 Yuli Levtov另一個線程上的回答

以下對我有用。

轉到編輯->首選項->外部工具->外部腳本編輯器Select Scripting Editor

在此處輸入圖像描述

我解決了在我的 Unity 項目中配置的 WIN 上安裝相同版本的 .NET。 (播放器設置)

以上解決方案都不適合我。 但是我打開了ProjectName.CSPROJ文件並手動添加了新文件,它就像魅力一樣

  • 轉到“工具”菜單上的“選項”,然后在“環境”節點中選擇“文檔”。 (如果文檔未出現在列表中,請在“選項”對話框中選擇“顯示所有設置”。)
  • 勾選“解決方案資源管理器中的其他文件”,然后單擊“確定”。 (此選項在解決方案資源管理器中顯示“雜項文件”節點。雜項文件是與項目或解決方案不相關的文件,但如果您勾選此選項,為了您的方便,雜項文件可以出現在解決方案資源管理器中。)
  • 在“其他文件”下的解決方案資源管理器中找到您的文件。 然后將您的文件拖放到它應該屬於的位置,瞧! 這會將文件復制到您放置它的位置。 如果您願意,現在可以安全地刪除 Miscellaneous Files 文件夾下的舊文件

學分: https ://stackoverflow.com/a/47662523/10471480


如果 Scripts 文件夾不可見:

  • 在解決方案資源管理器中單擊“顯示所有文件”
  • 找到腳本文件夾。
  • 右鍵單擊腳本並選擇“包含在項目中”

對我有用的是我復制了損壞的類中的所有代碼並刪除了該文件。 然后,我打開一個同名的空文件並粘貼回來。

結果:漂亮的語法亮點回來了!

請記住,如果您使用的是 ReSharper 工具,它將覆蓋 IntelliSense 並顯示它自己的。 要改變這一點,在 VS 上,轉到 Extensions -> ReSharper -> Options -> IntelliSense -> General 然后選擇 Visual Studio 而不是 ReSharper。

在重新啟動和/或重新安裝 VS 之前,首先嘗試打開任何其他項目以查看 Intellisence 是否有效,如果有效,則問題可能在於您當前的項目。 首先,最可能的受害者是帶有待更新的 NUGET 包。 要解決此問題,

  1. 右鍵單擊引用
  2. 繼續在 NUGET 包下管理 NUGET 包
  3. 繼續更新 安裝更新並重新檢查 Intellisence

我嘗試了所有這些,但最終發現我需要在解決方案資源管理器中右鍵單擊解決方案並添加現有項目並在 Window 的資源管理器中找到 C# 程序集文件。 似乎有無數不同的問題會導致您出現此錯誤,這可能是最簡單的解決方案。 如果您從統一雙擊腳本,它似乎不會拖動程序集。

另一個可能的解決方法:

  1. 在項目窗口中,單擊 Assets 文件夾
  2. 右鍵單擊,然后創建 -> C# 腳本
  3. 雙擊它,然后等待。

出於某種原因,這項工作。

嘗試組合: Ctrl + Alt + Space

上述方法之一對我有用,我剛剛找到了解決這個問題的方法,
1.首先進入項目目錄,刪除.sln文件
2.其次,進入unity並雙擊您的腳本。 然后 Visual Studio 將打開並出現錯誤, 在此處輸入圖像描述

  1. 然后單擊確定並關閉 Visual Studio 編輯器。
  2. 最后,關閉你的 Windows Defender,然后進入你的項目目錄,就會有.csproj文件。 只需雙擊並從您的 Visual Studio 編輯器中打開它,然后打開資產文件夾中的腳本文件夾,然后打開腳本,自動完成功能就可以正常工作了。

“首選項”->“外部工具”->設置你的外部工具

那是一個修復。 同樣對於 VS,您可以使用 JetBrains 的 ReSharper,但我建議使用 Rider。 那個對學生也是免費的。 它提供的性能不如 Visual Studio,但絕對超過 VS+Resharper。

祝你有個美好的一天,伙計)

當我想編輯 C# Unity 腳本時,它們會在 Visual Studio 中打開。 它應該為所有與 Unity 相關的代碼提供自動完成功能,但它不起作用。

在這里您可以看到缺少的功能:

缺少自動完成功能的視頻

正如所見, transform對象不會打開自動完成菜單。

統一版本:5.5.2f1
視覺工作室 2015
安裝了 Visual Studio Tools for Unity

當我想編輯 C# Unity 腳本時,它們會在 Visual Studio 中打開。 它應該為所有與 Unity 相關的代碼提供自動完成功能,但它不起作用。

在這里您可以看到缺少的功能:

缺少自動完成功能的視頻

正如所見, transform對象不會打開自動完成菜單。

統一版本:5.5.2f1
視覺工作室 2015
安裝了 Visual Studio Tools for Unity

嗯,也許您可​​以將我的指南視為可選方法。 我在將 Unity 2020 與 Visual Studio Code 1.26 一起使用時遇到了這個問題要解決問題,我按照以下步驟操作:

  1. 在 Visual Studio 中安裝 C# 插件
  2. 從此https://www.monodevelop.com/download安裝 Mono
  3. 讓我們通過這個命令which mono來看看 Mono 在你的 Mac 中的安裝位置。 例如,在我的 Mac 中,它是/Library/Frameworks/Mono.framework/Versions/Current
  4. 回到 C# 插件,讓我們打開它的設置並在插件的 setting.json 中進行如下更改:
    "omnisharp.monoPath": "/Library/Frameworks/Mono.framework/Versions/Current",
    "omnisharp.useGlobalMono": "always"

開始了....

如果您在 Microsoft Visual Studio 中使用 Resharper,則需要轉到“擴展 -> ReSharper -> 擴展管理器”並安裝擴展“Unity 支持”。 像魔術一樣工作!

從 Unity 中選擇Edit選項,然后 ~> Preferences... ~> External Tools ,然后打開Built-In Packages 我嘗試了所有解決方案,只有這個對我有幫助,我偶然打開了它!

在 Unity 中,編輯>首選項>外部工具單擊重新生成項目文件。 在此處輸入圖像描述

你安裝這個? 統一

安裝 Visual Studio 和 Unity 下載 Visual Studio 安裝程序,如果已安裝,則打開它。 為所需的 Visual Studio 版本選擇修改(如果已安裝)或安裝(對於新安裝)。 選擇 Workloads 選項卡,然后選擇 Game development with Unity 工作負載。 如果尚未安裝 Unity,請選中安裝程序可選部分中的 Unity Hub 復選框。 選擇修改或安裝以完成安裝。

這解決了我在 Visual Studio 2022 中的項目的問題

  • 解決方案
    • 程序集-CSharp(右鍵單擊)
      • 加載整個依賴樹

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM