Unity

[Unity] VR visual studio code 연동 문제 해결

한니닝 2024. 8. 25. 16:46

[예전글 다시 업로드]

 

유니티로 VR 개발하다 보면 아마 visual studio보다 vscode가 훨씬 가볍게 돌아간다는 말을 들었을 수도있다. 근데 vscode가 더 좋다고 한들... 연동이 좀 까다로움..

 

연동하면서 나타난 오류는

'gameobject' does not contain a definition for 'setactive' and no accessible extension method 'setactive' accepting a first argument of type 'gameobject' could be found (are you missing a using directive or an assembly reference?)

 

문제는 역시나 그저 내 vscode 연동이 잘 안되어있어서 gameobject 자체를 불러오지를 못한 거였다.

 

해결책은 그저 vscode를 다시 제대로 처음부터 연동하는 것....

연동을 위한 방법은

1. 일단 vscode 설치

설치 사이트: https://code.visualstudio.com

2. 유니티 External Tools 설정

unity에 아무 프로젝트나 들어가서 왼쪽 맨 위 툴바에서 Edit > Preferences

여기서 맨위 External Script Editor를 visual studio code로 설정해준다.

3. 그 외에 필요한 의존 라이브러리 설치

vscode 연동을 위해 다음 세가지가 모두 필요하다.

여기서 중요한 점은 dotnet의 경우 본인 framework버전을 확인하고 맞게 설치해줘야한다는 것!

그렇지 않으면

[fail]: OmniSharp.MSBuild.ProjectLoader The reference assemblies for .NETFramework,Version=v4.7.1 were not found. To resolve this, install the Developer Pack (SDK/Targeting Pack) for this framework version or retarget your application. You can download .NET Framework Developer Packs at https://aka.ms/msbuild/developerpacks

이런 오류를 맞이하게 될 것이다....

 

해결책

↓↓↓

<Dotnet>

dotnet과 같은 경우 자신이 생성한 유니티 폴더 내에서 Assembly-Csharp.csproj 파일을 찾은 뒤

<TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>

요 부분을 확인하여 본인 버전에 맞는 dotnet을 설치한다!!

나의 경우는 4.7.1버전의 dotnet을 설치했다.

그리고 나서 cmd에 dotnet 명령을 입력했을 때

이렇게 정보가 뜬다면 설치 성공

그리고 dotnet의 경우 예제 프로젝트를 최초로 한번 생성하고 빌드를 한 후에야 정상적으로 동작한다.

cmd창 혹은 vscode의 terminal에서

//1. 예제 프로젝트 생성 
dotnet new console -o myApp 
//2. 생성 후 만들어준 myApp 프로젝트로 이동 
cd myApp 
//3. 빌드 및 실행 
dotnet run

여기서 Hello World!가 출력 된다면 준비 끝이다.

<Mono>

mono는 본인 컴퓨터애 맞는 걸 선택해 깔아주면 된다.

(하지만 필자는 여기서 몇몇 자료들을 참조하다가 둘다 깔아져있는 상태인데 무서워서 둘 중 하나를 삭제하지 못하고 있는 중이다)

그 후 vscode에서 파일>기본설정>설정 혹은 단축키 ctrl + , 로 설정으로 들어가준다.

허접하지만 저 하얀색 동그라미 쳐진 곳으로 들어가면 settings.json 파일로 이동하게 된다.

그리고 코드를 확인하여

"omnisharp.path": "lastest",

"omnisharp.useGlobalMono": "always",

"omnisharp.projectLoadTimeout": 600,

이 없으면 추가해준다.

사실 맨마지막의 경우 없어도 무관한 것 같긴 한데 필자는

[ERROR] Error: OmniSharp server load timed out. Use the 'omnisharp.projectLoadTimeout' setting to override the default delay (one minute).

라는 오류가 또 났기 때문에;;; 찾아서 해결해주었다. 영잘알들은 직접 들어가서 확인해보시기

->> 참고 사이트: https://github.com/OmniSharp/omnisharp-vscode/issues/4188

여기까지 하고 저장해주면 자동으로 vscode가 omnisharp을 업데이트를 해준다.

4. vscode에 C# 플러그인 설치!

  • 저 초록색 플러그인 설치

그밖에 편하게 코드를 짜려면

  • C# Extension
  • Debugger for Unity
  • Unity Code Snippets

얘네도 까는 걸 추천한다.

그런데 또!! 여기서 갑자기 IntelliSence가 안될 때가 있다.

요즘 버전업된 C# Extension에서는 이게 작동이 안된다고 한다.

만약 IntelliSence가 말썽이라면 낮은 버전의 Extension을 재설치 해주도록 하자

첨부파일
csharp-1.15.2.vsix
파일 다운로드

해당 파일을 다운로드하고 vscode에서 원래 설치한 C# Extension이 있다면 삭제해준다.

그다음 Ctrl + Shift + P 를 눌러 Disable Auto Updating Extensions를 선택해주고

똑같이 단축키를 눌러 Install from VSIX...를 선택한다.

그리고 다시 vscode를 껐다 키면 낮은 버전 설치 완료다.

다사다난한 vscode unity연동이 끝이 났다.

필자는 하나를 해결하면 하나가 말썽이고... 계속해서 오류들이 생겨났었다.

연동 방법을 정리해준 글들은 많았지만 나처럼 오류가 잔뜩 난 사람은 없었던 건지....

오류를 한데 모아둔 글은 없었다. (당연하겠지...

그래서 그냥 내가 정리했다.

누군가에게는 도움 된다면 좋겠다.........

각 오류마다의 해결책들이 정리되어있는 글들은 많다. 나는 그저 한데 모아 정리만 한 수준이다.


 

참고 사이트들