티스토리 뷰
★ 한줄요약 : Unity 스크립트 editing 및 debugging을 위해서 VSCode는 당분간 쓰지말고 Visual Studio를 쓰자
기준버전
- Unity : 2021.3.4f1 (LTS)
- Unity-VSCode pakage : Visual Studio Code Editor 1.2.5 package (Feb.09.2022)
- VSCode : 1.67.2
- Visual Studio Code C# Extension (v1.25.0)
- Visual Studio Code Debugger for Unity Extension (Not officially supported by Unity) (v3.0.2)
- .NET : 6.0 (LTS)
- Microsoft Analyzers for Unity (v.1.13.0)
설치순서
1. VSCode 및 VSCode C# Extention 설치
- 설정에서 "Omnisharp: Use Modern Net" 체크해제("omnisharp.useModernNet":false) - extention v1.25.0 이상
2. .NET 6.0 설치 및 재부팅 (%PATH% 환경변수 적용)
- C# Extention 설치 후 팝업되는 알림창을 통해 .NET 6.0 SDK를 다운로드 받을수도 있다. 이 경우 접근페이지는 다르지만 다운로드되는 SDK는 동일하다.
- .NET 6.0 설치시 Unity호환성 문제로 .NET Framework 4.7.1 SDK를 설치해야 할 수 있다. (문제가 있다면 차후 Unity Editor 콘솔창 또는 VSCode 출력창에 오류 발생)
- 이미 설치된 상태인지 확인하려면 아래와 같이 레지스트리를 통해 확인한다.
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full의 Release값
- Release값이 461310(.NET Framework 4.7.1) 이상이면 문제가 없는듯 하다.
- 나중에 Script파일 작성시 생성되는 프로젝트파일(csproj)을 보면 target framework가 v4.7.1로 세팅됨
- Unity 설치시 추가모듈인 VS2019를 설치하면 528372(.NET Framework 4.8)로 설치되지만 문제없음
3. Unity 설치후 실행 및 설정 세팅
- 메뉴 > Window > Package Manager > Visual Studio Code Editor 패키지 설치 확인 (유니티 설치시 자동설치)
- Unity 프로젝트 생성시 닷넷 솔루션 파일(.sln) 자동생성 지원
- Unity 프로젝트 생성시 VSCode Workspace설정파일 자동생성 지원
- .vscode/settings.json의 files.exclude 목록 자동생성
- Unity프로젝트에서 Script파일 추가시 및 C#프로젝트파일(.csproj) 자동생성 지원
- csproj파일에 유니티 관련 어셈블리 dll 및 target framework 등의 설정을 자동으로 세팅하여 유니티 모듈에 대한 Intellisense 등을 지원
- C# language의 경우 9.0으로 세팅됨
- 메뉴 > Edit > Preferences > External Tools > External Script Editor : Visual Studio Code로 변경
- command line arguments 자동 세팅됨 : "$(ProjectPath)" -g "$(File)":$(Line):$(Column)
4. Microsoft Analyzers for Unity 세팅 (비공식 지원)
- Visual Studio에는 기본제공 되지만 VSCode는 수동설정 해야함
- Microsoft Analyzers for Unity 패키지 다운로드 (우측 Download package)
- 프로젝트 root폴더에 "NuGet/microsoft.unity.analyzers.1.13.0" 하위폴더 생성
- 향후 버전확인을 위해 버전명 기록
- 2에서 받은 패키지 압축해제후 analyzers/dotnet/cs 폴더의 Microsoft.Unity.Analyzers.dll 파일을 3의 폴더로 복사
- 프로젝트 root폴더에 "omnisharp.json" 파일 생성 및 아래 세팅 입력.
- Unity와 VSCode를 종료 후 재시작하면 Analyzer의 warning이 정상동작하는 것을 확인할 수 있다. Analyzer를 사용하려면 프로젝트 생성시마다 이런식으로 수동설정 해줘야한다.
{
"RoslynExtensionsOptions": {
"EnableAnalyzersSupport": true,
"LocationPaths": ["./NuGet/microsoft.unity.analyzers.1.13.0"]
}
}
< omnisharp.json >
만약 특정 경고를 해제하고 싶다면 프로젝트 root폴더에 ".editorconfig" 파일 생성 및 아래와 같이 설정
root=true
[*.cs]
dotnet_diagnostic.IDE0051.severiry = none
다양한 규칙들은 여기에서 확인해서 상황에 맞게 적용 가능하다.
5. VSCode 디버깅 설정 (비공식 지원. WebGL을 제외하고 작동)
- VSCode에 "Debugger for Unity" 확장 설치
- 좌측패널 Run and Debug 선택 (아마 디버그 환경설정(launch.json)이 자동으로 안될것)
- 열려있는 편집창 탭을 모두 닫은 후, "create a launch.json file" 클릭
- json파일이 정상적으로 생성되었다면 저장 후 F5를 통해 디버깅하거나 명령팔레트의 "Unity Attach Debugger"를 통해 연결해서 디버깅이 가능하다. (Unity Editor도 Debug Mode로 놓고 Play Mode로 진입해야함)
- GitHub repository 최종 커밋 날짜만 봐도 알 수 있겠지만 지원이 미비하며 버그가 다수 존재
- Unity측에서 거의 손뗀듯함. Script Debugging이 필요하다면 그냥 Visual Studio를 사용하는게 나아보임
이슈
개발환경이 Windows면 그냥 Visual Studio를 써야하는 이유
- 현재 Microsoft에서 .NET (6.0)으로 체제 변환을 시행하면서 그동안 크로스플랫폼을 위한 Mono, Xamarin, .NET Core 및 OmniSharp 프로젝트에도 여러가지 변화가 생기는 중.
- VSCode의 C# extension인 OmniSharp도 이런부분에 있어서 Unity개발의 경우 omnisharp.useModernNet을 false로 세팅해줘야 한다던지, .NET framework 4.7.1을 설치해줘야 한다던지 별별 문제가 생기고 있음.
- 개발자는 변하지 않는 기술에 집중해야지 별 중요하지도 않은 플랫폼/프레임워크 측의 변경사항 따라다닌다고 이것저것 따로 설치하고 환경설정 잡고 골머리를 쌓을 이유가 없음
- 게다가 Unity측에서 타깃프레임워크를 .NET으로 마이그레이션하는 작업은 아마도 꽤 긴기간이 필요할것이라 생각됨
- 즉, 크로스플랫폼을 위해 자리잡기 시작한 .NET으로 합종연횡 및 안정화 될때까지는 애초에 문제를 지들이 처리해서 배포한 Visual Studio를 Unity 구성요소와 함께 설치하는게 가장 현명한 선택 (아님 Jetbrains사의 Rider라던지)
- VSCode를 굳이 써야할 상황이라면 환경세팅 한번 맞추면 업데이트를 최대한 안하던지, VSCode 및 C# extension(OmniSharp) 업데이트 마다 변경사항 읽어보고 Unity관련 변경사항이 있다면 적용
References
- Unity 공식문서 : https://docs.unity3d.com/kr/current/Manual/ManagedCodeDebugging.html
- VSCode 공식문서 : https://code.visualstudio.com/docs/other/unity
※ 포스팅 하는동안 히스토리가 뭔가 찝찝했는데 그 며칠사이에 VSCode가 업데이트 되면서 Debugger for Unity가 deprecated 됨. 한동안은 그냥 VS2022 쓰는걸로..
추가 결론
현재로서는 쓰지도 않는 기능들도 덕지덕지 붙어있는 통합IDE라 약간 무거운것 빼고는 Unity 개발에 있어 거의 모든면에서 Visual Studio 2022가 VSCode를 압도한다. (Unity Massages 자동완성, Unity에디터와 양방향Sync, Attached Debugging, CodeLens를 통한 유니티Object 참조 확인, etc)
"GitHub Pull Requests and Issues" 확장기능을 지원안해서 GitHub Issue, PR, Branch workflow를 자동화 못하는점은 약간 아쉽지만 GitHub연동도 지원하기에 Unity개발에는 VS2022를 적극 강추합니다.
'Programming > IDE, Tools, etc.' 카테고리의 다른 글
[GitHub] GitHub CLI를 이용한 Label 설정 복제 (0) | 2022.07.06 |
---|---|
[Tistory] 기본 스킨 커스터마이징 (0) | 2022.06.22 |
[VSCode] 클린 설치 및 주요확장 (Windows10) (0) | 2022.06.08 |
[Notepad++] 개발자 필수유틸 notepad++ 활용 (0) | 2022.05.09 |
[VSCode] Pylint의 linting 경고 무시하기 (String statement has no effect pointless-string-statement) (0) | 2022.01.18 |
- Total
- Today
- Yesterday
- initialize
- firestore
- async
- Custom Package
- await
- selenium
- Scraping
- vscode
- Python
- Singleton
- coroutine
- Debug
- github
- C#
- .net
- git
- Visual Studio Code
- unity
- 닷넷
- logging
- 비동기
- Addressables
- VS2022
- RuntimeInitializeOnLoadMethod
- gcp
- 환경설정
- 싱글톤
- framework
- 코루틴
- 유니티
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |