VSC & Unity 세팅 가이드

Chanhee Jang·2023년 2월 24일

2022/09/02 회의때 코드 컨벤션을 정했었고, 코드 컨벤션을 시스템적으로 강제하고, VSC에서 유니티를 세팅하기 위해 가이드 문서를 작성했었습니다.


이 문서는 다음 과정들이 담겨있습니다.

  1. VSC에서 유니티 개발 환경 세팅하기
  2. VSC에서 코드 컨벤션 환경 세팅하기

그전에...

VSC가 없다면 다운로드 받도록 합니다.

저는 2022/09/02 기준 최신 릴리즈인 1.71.0 버전을 사용하고 있습니다.

VSC에서 유니티 개발 환경을 구축하는 법

유니티 에디터 버전의 C# 버전과 .NET 버전을 보고 .NET 을 다운로드 받아야 합니다.

저희 팀의 유니티 에디터 버전은 21.3.6f1입니다.

21.3.6f1의 C# 컴파일러에는 Roslyn이 사용되며 C# 9.0 까지 지원됩니다.

그리고 C# 9.0은 .NET 5에서부터 지원합니다.

그러므로 .NET 5.0.17 SDK를 다운로드 받습니다. 99.98% 확률로 64비트를 쓰고 있으니 x64를 다운로드 받으시면 되겠습니다.

SDK를 받고나서 각자 해당되는 OS별로 추가 동작이 필요합니다.

아래의 텍스트를 읽어보고 추가 동작을 수행하도록 합니다.

  • 윈도우의 경우

    .NET SDK를 다운로드 받고나면 재부팅을 시킵니다.

    그러고나서 Build Tools를 다운로드 받습니다.

    스크롤을 내려 빨간줄의 Visual Studio 2022용 도구를 클릭한 다음,

    Visual Studio 2022용 빌드 도구를 다운로드 받도록 합시다.

    해당 빌드 도구를 다운로드 받고 설치를 한다면 이런 화면이 나올 것입니다.

    .NET 데스크톱 빌드 도구를 선택한 후 선택사항에 체크되어 있는 것들을 모두 체크 해제합니다.

  • 맥의 경우

    최신 Mono 버전을 다운로드 받아야합니다. (Stable channel 을 받도록 합니다.)

    유니티에 들어가있는 Mono와는 별개로 동작합니다.

    다운 받은 dotnet과 mono를 어디서든지 실행할 수 있게 세팅해줍니다.

    저같은 경우 path에 추가하는게 귀찮아서 심볼릭 링크파일로 이어주었습니다.

    sudo ln -s /usr/local/share/dotnet/x64/dotnet /usr/local/bin/
    sudo ln -s /Library/Frameworks/Mono.framework/Versions/Current/bin/ /usr/local/bin/
  • 다음 단계로 가기전에 확인해야될 것

    1. 유니티 에디터(우리 프로젝트 폴더)를 켜서 Edit → preferences → External Tools 에서 External Script Editor를 Visual Studio Code로 바꿉니다.

    2. 패키지 매니저에 Visual Studio Code Editor 를 검색후 해당 패키지를 다운로드 받습니다. (기본적으로 설치가 되어있을텐데 없으면 받아주도록 합니다.)


VSC 세팅

VSC에서 C# extension을 받아주도록 합니다. 1.25.1 버전을 받아야 현기증이 일어나지 않습니다.

톱니바퀴 아이콘을 누르고, Extension Settings로 들어갑니다.

use modern net 옵션을 해제합니다.

VSC를 닫고, 유니티 에디터에서 스크립트 파일을 클릭해 VSC가 잘 켜지는지, 그리고 인텔리센스가 지원되는지 확인해봅니다.


코드 컨벤션 환경 구축하기

MS의 유니티 analyzer 에다가 우리의 코드 컨벤션을 끼얹어봅시다.

우선 MS의 유니티 analyzer를 다운 받습니다.

해당 dll을 더블클릭하면 다운로드 가능합니다.

프로젝트의 어딘가에 dll 파일을 넣고 VSC의 C# 플러그인 설정 파일을 만들어, 해당 설정 파일에 dll의 경로를 명시해 주면 됩니다.

저같은 경우

  1. 프로젝트의 루트에 Nuget 폴더를 만들고 dll 파일 넣음
  2. 프로젝트의 루트에 VSC의 C# 플러그인 설정 파일은 omnisharp.json 파일을 넣음
  3. omnisharp.json 에다가 dll 경로 명시
{
    "RoslynExtensionsOptions": {
        "EnableAnalyzersSupport": true,
        "LocationPaths": ["NuGet"]
    }
}

혹시나 VSC 상에 dll 파일이 안 보이는 경우

이전 과정들을 잘 따라왔다면 프로젝트에 .vscode 폴더와 settings.json이 생긴걸 볼 수 있습니다.

.vscode는 해당 프로젝트의 vscode 에디터 환경설정(vscode에서 사용되는 extension을 프로젝트 단위로 옵션을 설정해주거나, 프로젝트에 있는 특정 파일들을 숨김처리해줄 수도 있습니다.)에 관한 폴더입니다.

생기지 않았다면 vsc를 끄고 유니티 에디터로 돌아가 Assets → Open C# Project를 클릭합니다.

settings.json을 누르고 dll 파일 숨김처리를 해제해줍니다.

settings.json을 저장 한 뒤, Microsoft.Unity.Analyzers.dll 파일이 NuGet 폴더안에 있는지 확인합니다.

빈 라이프사이클(Awake, Start 등) 메소드를 작성하고 UNT0001 경고 메세지가 뜨는지 봅니다.


지금까지 우리는 vsc에 유니티 개발환경을 구축하고, 컨벤션을 시스템적으로 강제할 수 있는 환경을 만들었습니다.

이제 우리의 컨벤션을 실질적으로 적용시켜야 합니다.

  1. .editorconfig 파일을 통해 적용하거나
  2. 정적분석용 dll 파일을 만들어 적용을 시킬 수 있습니다.

1번의 방식은 .NET의 Code analysis rules를 .editorconfig에 작성해 적용시키는 방식입니다.

2번의 방식은 1번의 방식이 통하지 않을 때 해야됩니다.

그렇기때문에 우선 1번을 살펴보겠습니다.

.NET의 Code analysis rules는 이렇게나 다양합니다.

간단한 예를 위해 제 프로젝트의 LineManager.cs 를 보면 IDE1006 메세지가 떠 있습니다.

메소드 문자열이 파스칼 케이스가 아니기에 뜨는 메세지입니다.

만약에 제가 파스칼 케이스가 아닐 때도 메세지를 띄우지 않는다고 한다면

다음과 같이 editorconfig에 적용시킬 수 있습니다.

파스칼 케이스가 아니면 메세지를 띄우지 않는 설정입니다.

또한 이렇게 복잡하게 말고 ide1006에 관한 메세지를 따로 제어한다면 이렇게 할 수 있습니다.

ide1006번 메세지는 띄우지 않는다 라고 설정할 수 있습니다.

이런 방식으로 우리가 만든 컨벤션을 적용시켜야됩니다.

참… 재미있겠죠?

profile
What is to give light must endure burning

1개의 댓글

comment-user-thumbnail
2023년 8월 10일

와우 좋은 정보네요

답글 달기