Engineering
Unity Plugin을 Communicator 하나로 통합하기
2021년 1월 15일
원문에서 보기 ↗Unity Native 개발 시 Plugin의 필요성
유니티로 개발된 게임들은 출시하기 위해 많은 네이티브 기능들은 연동해야 합니다.
Push, Purchase, WebView등 모바일 플랫폼에서 제공하는 다양한 기능들을 사용하기 위해 플러그인 개발이 필요합니다.
기존 플러그인 개발 방식
게임을 출시하기 위해 개발팀은 다양한 네이티브 기능들을 사용할 수 있는 플러그인을 개발하고 이렇게 개발된 플러그인은 그것을 필요로 하는 다른 개발팀과 공유하여 사용하는 과정에서 많은 코드가 중복되고 이런 중복코드에서 이슈 발생 시 유지보수에 많은 리소스를 낭비하게 됩니다. 
Communicator의 사용
Communicator는 기존의 Plugin 개발의 단점을 보완하고자 무료로 제공되는 서비스입니다.
Communicator는 플러그인의 통신을 담당하는 라이브러리를 제공함으로써 플러그인에서 코드의 중복을 최소화하고 모바일 플랫폼에서 제공하는 다양한 기능을 빠르게 개발할 수 있도록 돕습니다. 
네이티브와의 통신
-
개발자가 필요로 하는 네이티브 기능을 유니티와 Native에서 개발하고 통신을 위해 Communicator의 AddReceiver API 통해 Receiver를 등록합니다.
public static void AddReceiver(string domain, GpmCommunicatorCallback.CommunicatorCallback callback)- Receiver 등록 시 입력한 domain으로 Data를 받을 Receiver가 구분됩니다
-
Message를 특정 Receiver로 전달하기 위해서는 Message.domain에 Receiver 등록 시 입력한 domain 값을 입력하면 됩니다.
public class Message { public string domain; public string data; public string extra; }- 통신에 사용되는 Message 객체는 data와 extra 두 개의 string 타입의 필드가 있어 JSON, delimeter 사용 등 다양한 포맷으로 필요한 데이터를 전달할 수 있습니다.
-
통신에는 동기와 비동기 두 가지 방식이 제공됩니다.
public static GpmCommunicatorVO.Message CallSync(GpmCommunicatorVO.Message message) public static void CallAsync(GpmCommunicatorVO.Message message)
더 자세한 정보는 가이드에서 확인할 수 있습니다.
설치법
설치법은 다음과 같습니다.
- 에셋스토어에서 GamePackageManager를 설치합니다.
- 메뉴의 Tools/GPM/Manager를 선택합니다.

- Communicator를 설치합니다.

마무리
Communicator를 사용하면 어떤 데이터를 주고받을 것 인지 고민하시면 됩니다. 데이터를 어떻게 주고받을 것인가는 Communicator가 해결하여 드립니다. Communicator를 사용하여 플러그인 개발 시간을 줄이고 게임 콘텐츠 개발에 집중하실 수 있습니다.
GamePackageManager에는 게임 내에서 웹페이지를 열어볼 수 있는 WebView, 디버깅 연결 없이도 게임 내에서 로그를 볼 수 있는 LogViewer, 에셋 의존성 관리를 할 수 있는 AssetManagement와 같은 사용 시 도움이 되는 다양한 에셋들도 있습니다.
좋은 추가 기능 및 아이디어가 있거나, 이슈가 발생하였다면 아래 방법으로 공유 부탁드립니다.
감사합니다.