티스토리 뷰

유니티에서 안드로이드용 플러그인을 직접 만들려고 부딪혀보니, 일단 많은 자료들이 옛날 자료였습니다. ㅠㅜ 그래서 직접 부딪치면서 얻은 내용을 공유해보려 합니다.

 물론 저희 게임 광고 넣고 시작합니다. 설치 부탁드려요~




먼저, 기본 컨셉을 설명하겠습니다. 유니티는 쉽기 때문에 따라하기식의 책들이 많은데, 경력이 조금 있는 프로그래머의 입장에서는 원리만 파악되면 더욱 빠르게 사용할 수 있습니다.


 유니티에서 안드로이드용 플러그인을 사용하는 방식은 그냥 일반적인 안드로이드 라이브러리입니다. 다만, 유니티는 보통 C# 으로 작업하고, 안드로이드는 (당연히) 자바로 되어 있기 때문에, 어떻게?? 라고 생각할 수 있는데, 이 부분을 유니티에서 AndroidJavaClass/AndroidJavaObject 라는 클래스를 만들어서 쉽게 사용할 수 있도록 지원하고 있습니다. 즉, 아래처럼 진행하게 됩니다.


1. 자바 코드로, 안드로이드용 라이브러리를 만든다.

2. 안드로이드용 라이브러리 파일을 가져와서 /Plugin/Android 폴더에 넣는다

3. 유니티의 C# 코드에서 AndroidJavaClass 를 통해서 라이브러리에 있는 함수를 호출한다.


위와 같은 형태로 진행되며, 안드로이드용 라이브러리를 만들 때 패키지명(com.xxx.util 같은)을 통해서 라이브러리의 클래스를 찾고 사용하게 됩니다.


이제 실제로 만들어보겠습니다. 여기서는 핵심 컨셉을 설명하는게 목적이기 때문에 외부 링크로 대체하겠습니다.


1. 아래의 포스팅을 참고하여 aar 파일을 생성합니다. 안드로이드 스튜디오에서 aar 빌드하기 정도로 검색하셔도 됩니다.

 http://flowarc.tistory.com/entry/Android-Studio%EC%97%90%EC%84%9C-%EB%82%98%EB%A7%8C%EC%9D%98-Library-%EB%A7%8C%EB%93%A4%EC%96%B4%EB%B3%B4%EA%B8%B0


2. 생성된 aar 파일을 /Plugin/Android 폴더에 넣습니다. 아마 Google Play 플러그인을 설정하셨다면 다른 aar 파일들이 거기에 있을 겁니다.


3. 아래와 같은 형태로 라이브러리를 사용합니다.


public void ShareResult() {     try     {         AndroidJavaClass unity_player = new AndroidJavaClass("com.unity3d.player.UnityPlayer");         AndroidJavaObject activity = unity_player.GetStatic<AndroidJavaObject>("currentActivity");         AndroidJavaClass share_plugin = new AndroidJavaClass("com.wimysoft.share.Share");         string title = "KickToTheSky";         string body = "KickToTheSky;         share_plugin.CallStatic("DoShare", activity, title, title, body, "example.png");     }     catch (Exception ex)     {         Util.Log("ShareResult error:" + ex.Message);     } }


 저희는 자바 라이브러리를 만들 때 com.wimysoft.share.Share 라는 클래스를 만들었고, DoShare 라는 static 함수를 만들었습니다. 위 코드의 형태를 보면, 유니티 플레이어로부터 currentActivity 를 얻어서, 우리가 만든 라이브러리에 넘겨주고, 나머지 인자들은 직접 문자열을 만들어서 채워주는 형태입니다. 참고로 안드로이드에서 말하는 activity 는 쉽게 생각하면 "현재 화면" 정도로 생각하시면 됩니다. 현재 화면이 있어서 무슨 일이든 할 수 있습니다.


 사실 코드를 조금만 더 파보면, AndroidJavaClass/AndroidJavaObject 를 이용하면 굳이 안드로이드 라이브러리 파일(aar)을 만들지 않고도 C# 으로 다 할 수 있을 것 같지만, 실행을 시켜야 문제가 있는지 알 수 있으므로 제작 과정이 너무 힘듭니다. 안드로이드용 코드는 안드로이드 스튜디오에서 라이브러리로 만드시길 권장합니다.


 정리해보면, 유니티에서는 AndroidJavaXXX 클래스를 통해서 쉽게 안드로이드용 라이브러리 파일(aar)에 있는 클래스/함수를 사용할 수 있습니다.



신고
댓글
댓글쓰기 폼
공지사항
최근에 달린 댓글
Total
669
Today
0
Yesterday
1
링크
TAG
more
«   2017/11   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
글 보관함