본문 바로가기
Unity3D/Tip

VSCODE (Visual Studio Code) 자동 완성 기능이 안 될 때(2023.9.11 추가)

by 니키티스 2020. 8. 12.

해당 글은 Vscode를 사용하는 유니티 C# 유저들을 위한 가이드입니다. 자동 완성이 안 될 때 참고해주시면 좋을 거 같아요.

 

+++ 2023.9.11 추가: 먼저 읽어주세요!!

아래 내용은 22년도까지는 유효한 방법이었지만 지금은 Vscode에서 Unity를 제공하게 되면서 조금 사정이 달라진 것 같습니다. 

이미 아시는 분들이 많으시겠지만 vscode의 익스텐션에 Unity가 추가되었습니다. 유니티에서 사용할 수 있는 Visual Studio Code 익스텐션으로 기존의 C#이 제공해주던 기능을 유니티에 특화하여 제공해주는 것으로 보입니다. 만약 해당 익스텐션이 설치되어 있지 않다 하시는 분들은 바로 설치해주시면 좋을 것 같습니다.

Assets->Open C# Project를 눌러서 해결되었던 것들이 많았었는데, 지금은 그런 문제를 별로 겪어볼 수가 없더라고요. 그래서 4번 항목은 아무래도 정 안된다 하시면 해보시는 게 나을 듯합니다. 물론 1, 2, 3, 5번 방법은 여전히 유효한 것으로 보입니다. 얼마 전에 깜빡하고 유니티에 vscode를 연결하지 않았었는데, 에디터를 vscode로 설정해주었더니 다시 자동완성이 활성화되더라고요.

혹은, '가출한토토로'님이 덧글로 남겨주신 '모든 익스텐션 하나씩 활성화/비활성화 시켜보기' 방법을 사용해보시는 것도 나쁘지 않다고 생각합니다.

유니티 설치할 때마다 이놈의 자동완성 하나 안 되는 것 때문에 고통받게 되는데, 이제 이 문제로 인해 고통받는 분들이 생겨나지 않았으면 좋겠습니다.

만약 해당 글로 해결되지 않는다고 하면 여러분만의 솔루션을 댓글에 작성해주시면 감사하겠습니다!

+++ (22년도 기준 신규 버그) C# 익스텐션 버전이 1.25으로 업데이트되면서 자동 완성 기능이 고장났답니다. 이거 때문에 고통받는 분들은 맨 아래의 5번을 봐주세요

 

처음 블로그에 올리는 글이니까, 카페에 올렸던 글을 재탕하며 올려봅니다.

 

재탕글 : 유니티 허브 - VSCode (Visual Studio Code) 자동 완성이 안 될 때

(링크 : https://cafe.naver.com/unityhub/109218)

 

VSCode (Visual Studi...

참조 링크 : https://forum.unity.com/threads/cant-get-v...

cafe.naver.com

해당 글은 다음 게시글을 보고 참조하여 작성하였습니다.

참조 링크 : https://forum.unity.com/threads/cant-get-vscode-to-work-properly-with-unity.538224/

 

Can't get VSCode to work properly with Unity

I've been trying to get Intellisense to work, but I don't get any relevant autocompletion like other people I've seen here. I've followed the...

forum.unity.com

 

 

 

 

해당 글은 Unity 버전 2019.4.2f1을 기준으로 작성되었습니다.

 

Unity로 게임을 개발하는 사람에게 에디터는 늘 고민되는 문제입니다.

 

보통 Visual Studio를 쓰는데 Intellisense와 여러 단축키 등 강력한 기능이 많지만 너무 프로그램이 무거운 나머지 studio 한 번 키는 데에만 한 세월이 걸리곤 합니다.

 

대체제로는 atom, sublime text 3, vscode 등이 있는데 에디터를 소개하는 글은 아니니 인터넷의 다른 글을 참조하는 걸 추천합니다.

 

VSCode(Visual studio code)를 쓰면 빠르다고 해서 저는 보통 VSCode를 에디터로 사용합니다. Visual Studio를 쓰다가 넘어오니 프로그램이 가벼워서 속도가 훨씬 빠르네요. 

추가하고 싶은 기능이 있으면 확장 기능(Extension)을 이용해 손쉽게 추가할 수 있어 무척 편리합니다.

 

그런데 VSCode를 잘 사용하던 와중. Unity에서 실행했을 때 가끔 자동완성이 안 될 때가 있습니다.

 

일반적으로 VSCode를 이용하여 코딩할 때
자동완성이 되지 않을 때

프로그래머는 모든 메서드를 외우고 다니지 않죠.

자동완성이 고장나는 순간 사실상 프로그래밍은 거의 불가능합니다.

Unity Documentation을 통해서 멤버 함수 몇 개 정도는 확인하거나, 간단한 함수는 손에 익어서 자동으로 칠 수 있겠습니다. 그러나 대다수의 경우엔 함수 이름과 그 기능만 대강 외워놓다 보니, 함수의 이름이나 파라미터가 기억이 나지 않을 때가 있고 어떤 클래스에 있었는지도 혼동이 생길 때가 있습니다.

 

보통 에디터에서는 Ctrl + 좌클릭을 통해 해당 클래스나 메소드 등의 정의로 이동할 수 있다. 이 경우엔 프로젝트 구조를 제대로

자동 완성이 안 돼서 클래스의 정의로 이동해서 필요한 메서드를 얻으려고 해 보지만, 저 같은 경우 정의로 이동조차 먹히지 않았습니다.

 

Monobehaviour 뿐만 아니라 모든 클래스, 모든 namespace로 이동할 수 없었어요.

 

대체 왜 이럴까... 빠르게 해결법을 봅시다.

다만 경험에 따른 간단한 해결법만 실어두어서 이 중에 해결법이 없을 수도 있으므로 주의해주세요.

 

 

Solution

일단 해결 방안을 보기 전에 VSCode가 제대로 설치되었는지를 확인하고 Unity에 필요한 프로그램을 다운로드하였는지 확인합니다.

 

유니티 연동에 필요한 의존 라이브러리를 반드시 설치하고 넘어가는 것이 좋습니다.

이는 I_Jemin님의 포스팅에 잘 정리되어 있으니 확인해보세요.

 

유니티에 비주얼 스튜디오 코드 (Visual Studio Code) 연동하기 – I_Jemin

 

유니티에 비주얼 스튜디오 코드 (Visual Studio Code) 연동하기 – I_Jemin

VSCode 설치 공식 사이트: https://code.visualstudio.com 매우 간단합니다. 공식 사이트에서 다운로드하여 설치하면 끝입니다. 설치 프로그램의 안내에 따라 기본 설정 그대로 설치를 진행하면 됩니다. VS

ijemin.com

 

다음으로 밑에 있는 필수 Extension을 설치했는지도 확인해주세요.

 

C#을 개발하기 위해서는 C# Extension이 반드시 필요합니다. Unity 개발에 있어서 위의 Extension이 없으면 C# 개발 자체가 안 되므로 자동 완성이 뜨지 않을 수밖에 없습니다. 

 

자, 위의 Extension이 있는지를 확인했으면 다음으로 넘어가겠습니다.

 

1. 유니티 에디터가 지금 사용하는 에디터로 설정되어 있는지 확인하기

가장 먼저 Unity 에디터가 제대로 VSCode와 연결되어 있는지를 확인해야 합니다.

 

Edit->Preferences->External Tools 탭에 들어가면 유니티 에디터를 확인할 수 있습니다. 여기에서 VSCode로 제대로 잡혀 있는지 확인해야 합니다.

상단 바의 Edit->Preferences로 들어가서...
좌측의 External Tools 탭에 들어와서, 맨 첫 줄에 있는 External Script Editor를 보자.

맨 첫 줄의 External Script Editor에 할당된 것이 Visual Studio Code로 되어 있으면 성공입니다! 아니라면 Visual Studio Code의 설치를 잘 확인해보시거나, 직접 Visual Studio Code의 폴더로 가서 연결해보세요.

 

2. 현재 열려 있는 프로젝트나 폴더가 여러 개일 경우

여러 개의 프로젝트가 열려 있으면 선택되지 않은 프로젝트에서 자동완성이 안 될 때가 있다고 합니다. 혹시나 해당 케이스일 수 있으니 한 번 확인해보세요.

Ctrl-Shift-P를 통해 명령 창을 열고, Omni: Select Project를 입력하세요.

(Select Project로만 입력해도 뜰 거예요)

 

현재 열린 프로젝트를 선택하는 명령어로, 이를 실행하면 현재 열려 있는 폴더의 프로젝트를 선택하게 됩니다.

 

Ctrl + Shift + P를 눌러 모든 명령을 표시할 수 있다. 다른 바로가기 키도 궁금하다면 Ctrl+K, Ctrl+S를 눌러 왼쪽 아래의 바로가기 키를 열 수 있다.

 

 

3. 유니티 프로젝트가 .sln, .csproj 파일을 제대로 포함하지 못해서 문제가 생기는 경우

프로젝트 내에 .sln 확장자의 파일이 보이지 않으면 반드시 포함시켜 주어야 합니다

 

sln의 확장자를 가진 파일은 솔루션 파일이라 하여 Visual Studio에서 구조를 관리할 때 사용합니다.

 

대충 이런 친구.

혹은 csproj 확장자 파일이 누락되는 경우도 있습니다. csproj 파일은 C# Project에 대한 참조 정보를 갖습니다. 프로젝트 내에 존재하는 파일을 리스트로 관리하는데, 시스템 어셈블리에 대한 참조도 포함합니다.

따라서 해당 파일이 없으면 해당 네임스페이스가 없다고 간주해서, 같은 프로젝트 같은 폴더에 있는데도 해당 이름의 파일과 클래스가 존재하지 않는다고 인식합니다.

 

.sln, .csproj 파일은 Unity Project를 생성하거나 실행할 때 자동으로 생성되고, 만약 없다고 하더라도 Visual Studio 등의 IDE를 열면 자동으로 생성되게 됩니다.

 

하지만 vscode로 실행할 경우에는 생성이 되지 않을 수도 있고, 두 파일이 존재하더라도 감지하지 못하는 상황도 발생합니다.

 

그러면 이들에 대한 참조를 할 수 있도록 수정해봅니다.

 

방법은 간단합니다.

Visual Studio를 통해 프로젝트를 한 번만 오픈하면 됩니다.

(혹은, 다음 글을 참고하여, Assets->Reimport All을 눌러서 프로젝트의 리소스를 모두 다시 import해도 생성할 수 있습니다. 다만 해당 방법은 시간이 많이 걸리니 주의해주세요.)

문제해결)Unity).csproj 파일이 생성되지 않을 때 (tistory.com)

 

문제해결)Unity).csproj 파일이 생성되지 않을 때

Unity 프로젝트를 열어도. csproj 파일이 생성되지 않을 때 뭔가 정상적이지 않고 프로젝트의 .csproj파일이 생성되지 않은 이슈가 생겼다. 솔루션 탐색기에서는 (찾을 수 없음)이라고 나왔다. 참조가

drehzr.tistory.com

 

Visual Studio가 존재하지 않는 분은 Visual Studio를 설치하고 여기로 와주세요.

아래 링크에서 설치하시면 되고 다음 툴을 함께 설치해주시면 됩니다.

 

- .NET 데스크톱 개발

- Unity를 사용한 게임 개발 

 

Visual Studio 2019 IDE - Windows용 프로그래밍 소프트웨어 (microsoft.com)

 

Visual Studio 2019 | 무료 다운로드

Visual Studio에서 코드 완성, 디버깅, 테스트, Git 관리, 클라우드 배포를 사용하여 코드를 작성할 수 있습니다. 지금 Community를 무료로 다운로드하세요.

visualstudio.microsoft.com

 

설치가 끝났다면 Visual Studio로 실행해봅시다.

1번에서는 VSCode를 외부 스크립트 에디터(External Script Editor)로 설정했지만 이번엔 Visual Studio를 에디터로 설정해봅시다.

그 후 아무 스크립트(.cs) 파일을 실행하면 됩니다.

 

아예 기존에 있던 .csproj 파일과 .sln 파일을 삭제하는 것도 도움이 됩니다.

삭제한 후에는 cs 파일 하나를 Visual Studio로 열어서 새로운 .csproj 파일과 .sln 파일을 생성합시다.

 

이렇게 하고 나서 VSCode를 외부 스크립트 에디터(External Script Editor)로 설정하면 높은 확률로 해결될 거예요.

 

4. 그래도 안 될 경우

이렇게 해도 안 될 경우 Unity 자체의 버그일 가능성이 있습니다. 저는 Unity Forum에서 해당 문제로 고통받는 사람이 또 있어서 이들의 시행착오에 도움을 받아 해결하게 되었습니다.

 

https://forum.unity.com/threads/cant-get-vscode-to-work-properly-with-unity.538224/

 

Can't get VSCode to work properly with Unity

I've been trying to get Intellisense to work, but I don't get any relevant autocompletion like other people I've seen here. I've followed the...

forum.unity.com

VSCode에서 프로젝트가 제대로 로드되지 않아 자동완성이 되지 않는 경우가 있습니다. 여기서 특징은 컴파일은 정상적으로 이루어져서 스크립트는 정상적으로 실행되는데, 스크립트 편집 과정에서 자동완성이나 다른 클래스 파일, 네임스페이스의 정의로 이동할 수는 없다는 겁니다.

 

이 경우, 우선 현재 VSCode가 열려 있다면 스크립트를 완전히 닫아줍니다.

 

정말 이거면 된다.

그다음에 Unity 상단 탭에서 Assets->Open C# Project를 통해 VSCode를 다시 열어줍니다.

 

이전과는 달리 잠시 시간이 걸린 후에 VSCode가 열립니다.

 

원인은 문제 상황에서 프로젝트가 제대로 로드되지 않아 import 할 네임스페이스를 발견할 수 없었던 것으로 보입니다. 이제 제대로 프로젝트가 로드되었으므로 문제가 해결되었을 겁니다.

 

 

클래스가 상속 중인 MonoBehaviour를 우클릭했을 때 나오는 화면. 정의로 이동을 누르면 해당 클래스의 정의가 있는 스크립트로 이동하게 된다.
Ctrl+좌클릭을 해도 똑같이 정의로 이동할 수 있다.

 

정상적으로 정의로 이동(Go to definition)도 잘 되고 자동 완성도 잘 되네요.

 

해당 방법으로 해결되지 않을 경우 참조할 만한 글의 링크들을 몇 개 걸어놓을게요.

이게 아니라면 VSCode를 설치할 때 Mono와 같이 중요한 프로그램을 제대로 설치하지 않았을 가능성도 있습니다.

 

5. C# 익스텐션 버전 다운그레이드 (2022.07.02 추가) 혹은 업그레이드(2023.9.11)

orangeum님이 달아주신 덧글에서 새로운 버그가 생겼다고 합니다.

VSCode의 C# 익스텐션을 1.25 버전으로 업데이트한 이후 Omnisharp이 제대로 동작하지 않는 버그가 있다고 하네요.

 

[유니티] Unity VSCode 자동완성 안될때(Intellisense, Mono, OmniSharp) (tistory.com)

 

[유니티] Unity VSCode 자동완성 안될때(Intellisense, Mono, OmniSharp)

1. Edit -> Preference -> External Tools 에서 VSCode 선택하기 2. 프로젝트이름.sln 혹은 .csproj 파일 삭제 후 게임 시작 후 다시 vscode 켜보기 3. F1 누른 후 OmniSharp : select project 로 프로젝트 골라보..

theoldface-dev.tistory.com

 

위 링크에 따르면 VSCode C# 익스텐션 버전을 1.24.4로 다운그레이드 시키면 해결된다고 합니다.

VSCode 좌측의 Extensions 버튼을 클릭해서 C# 익스텐션을 찾은 후,

Uninstall 옆의 버튼을 누르면 다른 버전을 설치할 수 있으니까 1.24.4로 변경하면 끝!

현재에도 위 방법은 통하지만, 이미 C# 버전이 23.9.11 기준 v2.1.2 버전까지 지원하는 상황이기 때문에, 지금은 이 문제로 인해서 자동완성이 안되는 분은 없으시리라 생각합니다.

혹시나 싶으시다면 vscode에서 C#이 최신버전으로 업데이트되어 있는지 확인해주세요.

 

cafe.naver.com/unityhub/91941

 

VSCODE 유니티 자동완성이 안됩니...

대한민국 모임의 시작, 네이버 카페

cafe.naver.com

cafe.naver.com/unityhub/97525

 

유니티unity - visual st...

대한민국 모임의 시작, 네이버 카페

cafe.naver.com

 

VSCode의 자동 완성으로 고통받는 사람들이 이걸로 문제가 해결될 수 있으면 좋겠습니다.

 

 

 

 

참고 문헌

c# - What does the .csproj file do? - Stack Overflow

 

What does the .csproj file do?

Usually a C# project has a .csproj file associated with it. What is that file for? What data does it contain?

stackoverflow.com

 

수정

2020.11.29 .sln, .csproj 파일이 잡히지 않을 때의 해결책을 추가하였습니다.

2022.07.02 orangeun 님이 적은 버그를 추가했습니다.

2023.09.11 가출한토토로님이 작성해주신 해결방안을 추가했습니다. 8월 기점으로 생긴 vscode Unity 익스텐션에 대한 내용을 첫 문장에 추가했습니다.

댓글