Visual Studio Code can be a great companion to Unity for editing and debugging C# files. All of the C# features are supported and more. In the screen below, you can see code colorization, bracket matching, IntelliSense, CodeLens and that's just the start.
Read on to find out how to configure Unity and your project to get the best possible experience.
Install Unity support for Visual Studio. Visual Studio Tools for Unity is a free extension that provides support for writing and debugging C# and more. Visit the Tools for Unity overview for a complete list of what the extensions includes. Unity will detect when Visual Studio Code is selected as an external script editor and pass the correct arguments to it when opening scripts from Unity. Unity will also set up a default.vscode/settings.json with file excludes, if it does not already exist (from Unity 5.5 Release notes).
Prerequisites
- In Unity, click Window, then Package Manager, then look for Visual Studio Code Editor. Expand it by pressing triangle, and upgrade to the latest version (for me, it was 1.2.0. I restarted VSCode and it worked. V1.1.4 had a bug that caused this problem, and was not fixed for about 3 months.
- How to fix IntelliSense Support for Unity 2019/2020/2021/2017/2018/2022 in Visual Studio 2017/2018/2019/2020/2021/2022. Easy to do and quick fix for Visual S.
From Using .NET Core in Visual Studio Code:
Install the .NET Core SDK, which includes the Runtime and the
dotnet
command.[Windows only] Logout or restart Windows to allow changes to
%PATH%
to take effect.[macOS only] To avoid seeing 'Some projects have trouble loading. Please review the output for more details', make sure to install the latest stable Mono release.
Note: This version of Mono, which is installed into your system, will not interfere with the version of MonoDevelop that is installed by Unity.
Install the C# extension from the VS Code Marketplace.
Setup VS Code as Unity Script Editor
Open up Unity Preferences, External Tools, then browse for the Visual Studio Code executable as External Script Editor.
The Visual Studio Code executable can be found at /Applications/Visual Studio Code.app
on macOS, %localappdata%ProgramsMicrosoft VS CodeCode.exe
on Windows by default.
Unity has built-in support for opening scripts in Visual Studio Code as an external script editor on Windows and macOS. Unity will detect when Visual Studio Code is selected as an external script editor and pass the correct arguments to it when opening scripts from Unity. Unity will also set up a default .vscode/settings.json
with file excludes, if it does not already exist (from Unity 5.5 Release notes).
Unity version 2019.2 or above
Since 2019.2, it is required to use the Visual Studio Code editor package. The built-in support for opening scripts from Unity and getting csproj
and sln
files generated has been removed.
Editing Evolved
With the solution file selected, you are now ready to start editing with VS Code. Here is a list of some of the things you can expect:
- Syntax Highlighting
- Bracket matching
- IntelliSense
- Snippets
- CodeLens
- Peek
- Go-to Definition
- Code Actions/Lightbulbs
- Go to symbol
- Hover
Two topics that will help you are Basic Editing and C#. In the image below, you can see VS Code showing hover context, peeking references and more.
Unity Extensions
The community is continually developing more and more valuable extensions for Unity. Here are some popular extensions that you might find useful. You can search for more extensions in the VS Code Extension Marketplace.
The extensions shown above are dynamically queried. Select an extension tile above to read the description and reviews to decide which extension is best for you. See more in the Marketplace.
Enabling code completion (For recent versions of Unity)
Download china usb devices driver. If you are installing VS Code for the first time, you might be missing targeting packs required for Unity's code-completion (IntelliSense) in VS Code.
Targeting pack download links:
Steps:
- Stop VS Code or Unity running.
- Download and install the targeting pack for your targeted framework version / preferred version from one of the above links.
- Start Unity.
- Create and/or open an existing script in VS Code, through Unity, and you should now see code completions.
Enabling Unity warnings
Unity has a set of custom C# warnings, called analyzers, that check for common issues with your source code. These analyzers ship out of the box with Visual Studio but need to be set up manually in Visual Studio Code.
Due to how Unity handles its .csproj
files, it does not seem possible to install packages automatically. You will need to download the analyzers from the NuGet website manually. When you're done, open the package file using a tool such as 7zip and extract Microsoft.Unity.Analyzers.dll
onto your project's root folder. You can place it inside a folder named NuGet
, for example. Do not place it inside Assets
or Packages
, as that will cause Unity to try to process the .dll
, which will make it output an error in the console.
Next, create an omnisharp.json
file at the root folder of your project, as explained here. Analyzer support in OmniSharp is experimental at the moment, so we need to enable it explicitly. We also need to point it to the .dll
file we just extracted.
Your omnisharp.json
file should end up looking like this:
where './NuGet/microsoft.unity.analyzers.1.9.0'
is a relative path pointing to the folder containing the .dll
file. Depending on where you placed it, your path may look different.
The Unity analyzers should now be working in your project. You can test them by creating an empty FixedUpdate()
method inside one of your MonoBehavior
classes, which should trigger a The Unity message 'FixedUpdate' is empty
warning (UNT0001).
Note that while it is possible to activate these analyzers, the suppressors they ship with the package (that turn off other C# warnings that may conflict with these custom ones) may not be picked up by OmniSharp at the moment, according to this thread. You can still turn off specific rules manually by following these steps:
- Create a
.editorconfig
file in your project's root folder (next to Unity's.csproj
files). - Add the following contents to the file:
root=true
tells OmniSharp that this is your project root and it should stop looking for parent .editorconfig
files outside of this folder.
dotnet_diagnostic.IDE0051.severity = none
is an example of turning off the analyzer with ID IDE0051
by setting its severity level to none
. You can read more about these settings in the Analyzer overview. You can add as many of these rules as you wish to this file.
[*.cs]
indicates that our custom rules should apply to all C# scripts (files with the .cs
extension).
You are now ready to code in Visual Studio Code, while getting the same warnings as you would when using Visual Studio!
Next steps
Read on to learn more about: Drivers aficio printers.
- Basic Editing - Learn about the powerful VS Code editor.
- Code Navigation - Move quickly through your source code.
- Debugging - how to use the debugger with your project
- C# - learn about the C# support in VS Code
Common questions
I don't have IntelliSense
You need to ensure that your solution is open in VS Code (not just a single file). Open the folder with your solution and you usually will not need to do anything else. If for some reason VS Code has not selected the right solution context, you can change the selected project by clicking on the OmniSharp flame icon on the status bar.
Choose the -CSharp
version of the solution file and VS Code will light up.
How can I change the file exclusions?
Unity creates a number of additional files that can clutter your workspace in VS Code. You can easily hide these so that you can focus on the files you actually want to edit.
To do this, add the following JSON to your workspace settings.
As you can see below this will clean things up a lot..
Before | After |
---|
How can I debug Unity?
Install the Debugger for Unity extension. And check out Debugging with VS Code to learn more about VS Code debugging support.
19 April 2020: We’ve updated this article with a contributed solution from one of our readers in the comments section.
One of the biggest perks of using Microsoft’s Visual Studio to write your Unity scripts is IntelliSense — a code completion aid in Visual Studio that offers suggestions as you write your code, and contextually presents you with information about classes, properties and methods that you are working with.
Given Unity’s enormous scripting API, IntelliSense is a tremendously helpful feature, especially for coders who are beginning their foray into developing games and software with Unity; and while we’d love to say that IntelliSense is automatically set up and linked to Unity’s API when you install it with the Unity Editor, sometimes that’s just not the case. So, if you’ve got both Unity and Visual Studio set up, but find that IntelliSense is still not offering Unity API suggestions, then this guide is for you.
There can be many reasons why IntelliSense is failing to work properly on your device, and we are assuming that you’ve already scoured the Internet a fair bit before stumbling on our article. Hence, we’ve put together a table of contents of sorts below, so if you’ve already tried some of the solutions we have, you can skip right through them.
- Getting IntelliSense working
Article continues after the advertisement:
1. Is my IntelliSense not working?
For IntelliSense to detect and work with Unity’s API, Visual Studio needs to:
- Be linked to the Unity Editor, and;
- Have the appropriate extensions installed (read further to find out what they are)
If you’ve installed Visual Studio via Unity Hub, this can have been automatically set up, but not always. Due to the bevy of ways which you can install Unity and Visual Studio, misconfigurations can happen, and you might end up with Visual Studio not integrating itself into Unity, and an IntelliSense feature that is not properly linked to Unity’s API.
We’ve found that, when installing some versions of Unity 2019 and 2020, Visual Studio does not always integrate with Unity’s API by default. So if things are not working properly, it might not be caused by misconfiguration on your end.
To check if IntelliSense is properly set up, open any script from the Unity Editor, and look out for 2 things:
- Whether the top-left dropdown says Miscellaneous Files. If it does, then IntelliSense is not set up.
- Try declaring a Unity variable, like a
GameObject
. If IntelliSense is properly set up, Visual Studio should have an auto-complete suggestion for you before you finish typing.
2. Getting IntelliSense working
So if IntelliSense isn’t working for you, what should you do?
a. Open your scripts from Unity
Before you try anything else from here, first make sure that your scripts are opened from within Unity, i.e. whenever you want to edit your scripts, double-click on them in the Unity Editor so that Visual Studio is opened by Unity.
Visual Studio Not Autocompleting Unity Code
If IntelliSense still doesn’t work when you do this, then continue onto the steps below:
b. Setting Unity’s External Script Editor
From the Unity Editor, access the Preferences window from Edit > Preferences. Then, click on the External Tools tab.
Visual Studio Not Autocompleting Unity 2017
Set the External Script Editor to the version of Visual Studio that you installed alongside Unity. Then, restart Visual Studio and see if IntelliSense now works. If it still doesn’t, then you might be missing…
If Visual Studio doesn’t appear on the dropdown, you will have to use the Browse… option (pictured above) to find it. It’s typically under C:Program Files (x86)Microsoft Visual Studio2019CommunityCommon7IDEdevenv.exe
for Windows devices.
Article continues after the advertisement:
c. Visual Studio Tools for Unity
To install this, open Visual Studio and go to Tools > Get Tools and Features.
Note: You’ll need administrator permissions to open this window, as it makes changes to the Visual Studio installation on your computer.
Once the installer is open, go to Workloads and find Game development with Unity. Check the box, and then click on the Modify button on the bottom-right corner to begin installation.
A popup may ask you to close certain processes before beginning installation. If this happens, close your Visual Studio project and the Unity Editor application.
When installation completes, restart both Unity and Visual Studio, then check to see if IntelliSense now works.
The Games development with Unity workload actually installs 2 additional Visual Studio components — Visual Studio Tools for Unity and C# and Visual Basic. You can install both modules individually by going to the Individual components tab, and checking both components in the list that is shown.
Article continues after the advertisement:
d. Check your .NET API compatibility level
If IntelliSense still refuses to work, you can open the Unity Editor and head to Edit > Project Settings and access the Player (or Player Settings) tab. Scroll down to the Other Settings sub-tab, and find the Api Compatibility Level dropdown under the Configuration heading.
Vscode Unity No Autocomplete
You want to set the Api Compatibility Level to a different option, and see which is the one that works for your device.
Visual Studio Code Unity Autocomplete
e. Regenerating your Unity project files
If the above solutions we’ve proposed did not work for you, you can also try this solution from one of our comment contributions.
Note: Back up your Unity project before trying this, as we are deleting some essential project files and letting Unity regenerate them.
- Close both Visual Studio and Unity on your device.
- Remove all
.sln
and.csproj
files in your Unity project folder. - Remove the
.vs
andLibrary
folders in your Unity project folder. - Re-open the project in Unity, then go to Assets > Open C# Project to open Visual Studio.
3. Conclusion
Visual Studio Not Autocompleting Unity Download
As with the other articles on the blog, we’d love if you leave a comment below, especially if you:
- Find any errors in this article, or;
- Find an IntelliSense fix that is not listed in this article
Visual Studio Not Showing Intellisense For Unity
Your comments will add on to the information that is already here, and help other future readers!
Visual Studio Not Autocompleting Unity 2017
Article continues after the advertisement: