M1용 Unity 2022.1 베타 잠깐 써보기

주로 윈도우 환경에서 유니티를 사용했었고, M1에서도 가끔 유니티를 돌려보기도 했다.

유니티 허브도 3.x 가 되면서 UI도 깔끔해지고, 새로워진 느낌이 확 든다.

Pre-releases 에는 이제 Intel 버전과 Silicon 버전을 구분해서 설치할 수 있다. 마찬가지로, Android 플랫폼 빌드를 위한 OpenJDK, NDK 등도 함께 설치가 된다.

새 프로젝트를 생성할 때, 템플릿을 다운로드해서 선택할 수 있다. Learning 탭에서는 현재 버전이 베타 버전이라 표시는 안되고 있지만, 미니 게임들을 설치하고, 레슨과 함께 진행해 볼 수도 있다.

간단하게 2D Project 를 생성해봤다.

Scene 뷰에 Floating Toolbar 가 눈에 띈다.

씬뷰에서 사용하는 기본 도구 단축키는 같고, 기즈모가 좀 더 잘 보인다.

GameObject 의 UI 쪽에 많은 부분이 TextMeshPro 기반으로 사용을 권하는 것 같다. 물론 Legacy 에 가면 이전 버튼 등을 사용할 수 있다.

Preferences 에 External Script Editor로 Visual Studio Code도 지정해서 쓸 수 있다.

탬플릿을 모바일 버전으로 해서인지 Mobile Notifications 패키지도 기본으로 설치된다.

최근에 iOS에서 Remote Push가 동작을 안해서 이 패키지로 해결을 했었는데, 기본적으로 유니티가 이 부분을 제대로 지원하는 거 같다.

Project Settings > Mobile Notifications

Jobs 메뉴가 보인다.

컴파일된 어셈블리 정보도 보이는데, 이건 좀 더 봐야겠다.

Import Activity 창이 있다.

Import 되는 각 항목들을 볼 수 있어서, 에디터에서 병목이 될 수 있는 부분을 좀 더 명확히 볼 수 있겠다.

Visual Script 기능도 포함되었구나. 볼트가 녹아져 있구나.

여튼, 개인 프로젝트를 할 때는 자주 써봐야겠다~

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.