원문: Visual Studio Code and Unity
Visual Studio Code는 Unity에서 C# 파일을 편집하는 데 큰 도움이 될 수 있습니다. 모든 C# 기능이 지원되며 더 많은 기능이 있습니다. 아래 화면에서 코드 색상화, 괄호 매칭, 인텔리센스, 코드렌즈 등의 기능을 확인할 수 있습니다. 그리고 이것은 시작일 뿐입니다.
계속 읽어서 Unity와 프로젝트를 최상의 경험을 얻기 위해 어떻게 설정하는지 알아보세요.
사전 요구 사항
Visual Studio Code에서 .NET 사용하기:
- 런타임과 dotnet 명령어를 포함한 .NET SDK를 설치합니다.
- [Windows] %PATH%의 변경 사항이 적용되도록 로그아웃하거나 Windows를 다시 시작합니다.
- [macOS only] "일부 프로젝트가 로드하는 데 문제가 있습니다. 출력을 검토하여 자세한 내용을 확인하십시오."라는 메시지를 보지 않으려면 최신 안정된 Mono 릴리스를 설치하세요.
- 참고: 시스템에 설치되는 이 버전의 Mono는 Unity가 설치하는 MonoDevelop 버전과 충돌하지 않습니다.
- VS 코드 마켓플레이스에서 C# 확장 프로그램을 설치합니다.
- VS 코드 설정 편집기에서 (Ctrl+,), C# 확장 프로그램의 Omnisharp: Use Modern Net 설정의 체크를 해제합니다. ("omnisharp.useModernNet": false).
Install Build Tools for Visual Studio (Windows only)
The C# extension no longer ships with Microsoft Build Tools so they must be installed manually.
- Download the Build Tools for Visual Studio 2022.
- Install the .NET desktop build tools workload. No other components are required.
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%\Programs\Microsoft VS Code\Code.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.
Enabling code completion (For recent versions of Unity)
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. Make sure to download the .nupkg file, the source code from GitHub will not work.
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.
Note: 7zip cannot open a .nupkg file by right-click and Open with. Instead, you have to open the 7zip application, navigate to the file, and then select Extract.
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:
{
"RoslynExtensionsOptions": {
"EnableAnalyzersSupport": true,
"LocationPaths": ["./NuGet/microsoft.unity.analyzers.1.14.0/analyzers/dotnet/cs"]
}
}
where "./NuGet/microsoft.unity.analyzers.1.14.0/analyzers/dotnet/cs" 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
[*.cs]
dotnet_diagnostic.IDE0051.severity = none
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 want 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:
- Basic Editing - Learn about the powerful VS Code editor.
- Code Navigation - Move quickly through your source code.
- 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. By adding these excludes to your workspace settings, you will not change your global user settings and it allows anyone also working on the project to have the same file excludes.
// Configure glob patterns for excluding files and folders.
"files.exclude": {
"**/.git": true,
"**/.DS_Store": true,
"**/*.meta": true,
"**/*.*.meta": true,
"**/*.unity": true,
"**/*.unityproj": true,
"**/*.mat": true,
"**/*.fbx": true,
"**/*.FBX": true,
"**/*.tga": true,
"**/*.cubemap": true,
"**/*.prefab": true,
"**/Library": true,
"**/ProjectSettings": true,
"**/Temp": true
}
As you can see below this will clean things up a lot...
Before
After
To edit this directly within VS Code Settings editor, go to File > Preferences > Settings (Code > Preferences > Settings on macOS). Switch to the Workspace tab and then type "files exclude" into the Settings editor search bar. Add a glob pattern similar to the pattern shown below by clicking the Add Pattern button for the Files: Exclude setting. You will need to add each pattern separately.
**/.git
**/*.fbx
**/*.FBX
**/*.mat
**/*.*.meta
**/*.meta
**/*.prefab
**/*.unityproj
**/Library
**/Packages
**/ProjectSettings
**/Temp
'Unity' 카테고리의 다른 글
[Error] Inputfield(TMP)에서 text를 가져오면 int로 변환이 되는데, Inputfield(TMP)의 안에 있는 TMP_Text에서 text를 가져와 int로 변환하면 Format 에러가 생기는 경우 (0) | 2023.07.30 |
---|---|
[Unity] 구글 스프레드시트를 실시간 변경 테이블로 사용 (0) | 2023.07.14 |
[Unity] enum에 [System.Flags]를 쓰는 이유? (0) | 2023.04.22 |
[Unity] Text Mesh Pro 한국어 폰트 등록 (0) | 2023.04.21 |
[Unity] Text Mesh Pro 일본어 폰트 등록 (0) | 2023.04.09 |