Unity Visual Studio Code Intellisense 안되는 현상 임시 해결

Visual Studio Code 를 최신 버전으로 설치하고 C# Extension 도 최신버전으로 설치를 했더니, C# Intellisense 기능이 동작을 안한다.

 

다음과 같이 해결했다.

  1. Unity Editor > Package Manager > preview 버전을 활성하고, Visual Studio Code Editor 1.2.0 을 설치
    image2020-4-7_12-10-42
  2. C# Extension 수동 설치
    1. 다운로드(https://github.com/OmniSharp/omnisharp-vscode/releases/tag/v1.21.16)
    2. 설치(Extensions > Install from VSIX…)
      2020-04-07 오후 12.28.00
    3. Reload & Download
      2020-04-07 오후 12.30.03
  3. Reload Project
    1. 프로젝트가 커서 로딩 시간 Timeout 이 되면, 설정에서 omnisharp Project Load Timeout 시간을 늘리자.
      2020-04-07 오후 1.38.44

 

새 버전이 나오면 해결되겠지~

Vivox SDK Test

유니티가 Vivox 를 인수했다.

Vivox는 블리자드의 오버워치 등의 유명 게임에서 사용하는 음성채팅 모듈을 제공하는 업체다.

Vivox 서비스 등록

개발자 사이트(https://developer.vivox.com/) 에서 계정을 등록하고 사용을 허가 받으면 SDK를 테스트할 수 있다.

Screenshot_022420_111500_AM.jpg

서비스 포탈에 접근하게 되면, 앱을 생성할 수 있다. 생성할 때는 사용할 대상 플랫폼을 지정할 수 있다. 최신 SDK를 다운로드 할 수 있는데, Unity 버전은 모두 같은 내용의 파일을 다운로드한다.  이 파일은 유니티 내 Asset Store 의 Vivox SDK 와 같은 파일이다.

 

유니티에서

Vivox 서비스가 준비가 되면, 유니티에서 관련 Asset을 설치할 수 있다.  Asset Store 창에서 Vivox를 검색해서 Vivox Voice And Text Chat 항목을 선택해서 Import 한다.

Screenshot_022420_112314_AM.jpg

Import 가 완료가 되면, Vivox 폴더에 관련 파일들을 확인할 수 있다.  Samples 폴더에 TanksUnityGameSample 은 Vivox 를 테스트하는 탱크 게임 샘플이다.  관련 씬을 추가해서 빌드 혹은 Editor 에서 테스트 할 수 있다.

테스트를 위해서는 앞서 Vivox Service 가입시 만들어진 앱의 API 종단점 값, 도메인, 발급자자, 시크릿 키 값을 등록해야한다.

주요 기능을 발췌해 보면

Import 해야할 주요 항목은 아래와 같다.

using VivoxUnity;
using System;
using System.ComponentModel;

LoginSession 등의 Callback 부분에 의해서 System.ComponentModel 의 INotifyPropertyChanged 인터페이스를 사용한다.

샘플 코드중에 안드로이드 플랫폼쪽 관련 코드가 추가되어 있다

#if UNITY_ANDROID && !UNITY_EDITOR
// Initialize the VivoxNative module
AndroidJavaClass unityPlayer = new AndroidJavaClass(“com.unity3d.player.UnityPlayer”);
AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>(“currentActivity”);
AndroidJavaObject appContext = activity.Call<AndroidJavaObject>(“getApplicationContext”);
AndroidJavaClass pluginClass = new AndroidJavaClass(“com.vivox.vivoxnative.VivoxNative”);
pluginClass.CallStatic(“init”, appContext);
#endif

일단 이 부분도 사용 시에 고려해야할 거 같다.

 

주요 클래스

  • VivoxUnity.AccountId – 연결할 계정 및 접속 정보를 갖는다.
  • VivoxUnity.Client – 연결하는 세션 정보를 갖을 Client
  • VivoxUnity.LoginSession – Client 와 AccountId를 이용한 로그인 세션
  • VivoxUnity.ChannelId – 채널 식별 정보 (발급자, 채널명,  채널 종류(일반, 위치기반, 에코), 3D 속성)
  • VovoxUnity.ChannelSession – Login Session +
    ChannelId, GroupId  로 세션 관리

 

주요 Event

  • LoginSession.PropertyChanged – 로그인 세션 상태 변경시
  • ChannelSession.PropertyChanged – 채널 상태 변경
  • ChannelSession.Participants.AfterKeyAdded – 참가자 추가시
  • ChannelSession.Participants.BeforeKeyRemoved – 참가자 제거시
  • ChannelSession.Participants.AfterValueUpdate – 참가자 정보 업데이트
  • ChannelSession.MessageLog.AfterItemAdded – 채널 채팅 메시지 추가시
  • ChannelSession.SessionArchive.AfterItemAdded – The list of session archive messages returned by a BeginSessionArchiveQuery.

 

 

 

 

새로운 Asset Type 생성

새로운 타입의 Asset 을 만들고 싶다.

Project Window 에서 t:XXXXXX 형식으로 쓰고싶다.

 

아래 코드는 ElgarProfile 이라는 Asset 타입을 생성한다.

[CreateAssetMenu(fileName = "NewAssetElgarProfile", menuName = "MyAsset/New Elgar Profile", order = 0)]
public class ElgarProfile : ScriptableObject
{
        public int m_Property;
}

 

Project 창에서 Create 메뉴에서 MyAsset / New Elgar Profile 항목을 선택해서 항목을 만들 수 있다.

Project 창 검색 필드에서  t:ElgarProfile 를 입력해서 찾을 수 있다.