안녕하세요 요즘 장마철이 끝나지 않고 비가 계속 쏟아지는데 답답하네요 ㅎㅎ 새로운 동내로 이사 와서 첫 주말 자전거 타고 둘러보려 했는데 아쉽네요 그런 관계로 안드로이드 플러그인 사용에 대해 알려드리겠습니다!
저는 처음 사용할 때는 삽질을 많이 했지만 여러분은 간단히 되길 바라면서 시작해보겠습니다.
우선 안드로이드 프로젝트를 만들어 주시기 바랍니다.
empty Activity 로 하셔도 되고
No Activity를 하셔도 무방합니다.
저는 일단 처음에는 안드로이드에서 만든 메서드를 사용해보고 잘 되는지 확인하기 위해서 Empty Activity로 시작해서 실제 구동되는지 확인하고 넘어갔었습니다.
다음 화면입니다.
여기서 주의하셔야 할 것은 Minimum SDK 입니다.
그 이유는 유니티에서도 Minimum SDK를 설정하는데 안드로이드 Minimum과 유니티 Minimum이 일치하지 않으면 오류가 생기게 됩니다. 잘 기억해두셨다가 유니티에서도 같게끔 설정해주세요
유니티 프로젝트가 성공적으로 생성되고 gradle 파일들도 성공적으로 빌드되었다면 File -> New -> New Module로 들어가 모듈을 생성해줍니다. 타입은 Android Library로 선택해주세요
모듈이 생성되면 androidTest, test 파일을 지워주세요 저는 진행하다 까먹어서 후에 지웠습니다. 이 파일들이 같이 있으면 중복으로 오류가 생길 수도 있답니다.
생성된 모듈에 클래스를 생성해주세요. 저는 test_String으로 만들겠습니다.
아래의 이미지와 같이 문자열 반환 메소드를 만들었습니다. 우선 플러그인이 되는지 확인을 위해 간단한 문자열 반환 함수만 사용하겠습니다. 기본적으로 함수를 static을 붙여서 만든 이유는 static을 안 붙이고 유니티에서 호출하면 호출이 되질 않습니다. static을 안 붙이고 사용하려고 하신다면 싱글턴 패턴을 이용하셔야 합니다. 다음 글에서 다루겠습니다.
이제 Build -> Make Module '모듈명' 을 클릭해주세요
그다음으로, 생성한 모듈을 우클릭하여 Show in Explorer을 선택해서 폴더를 엽니다.
mylibrary를 클릭(본인의 모듈명)
outputs를 클릭
aar을 클릭
aar 파일이 만들어 진 것을 볼 수 있습니다.
이 파일을 이용해서 유니티에서 안드로이드에서 구현된 메서드를 사용할 수 있도록 할 수 있습니다.
이제 유니티로 넘어가겠습니다.
유니티 프로젝트를 생성해주세요
생성되었다면, 위 탭 창에서 File -> Build Setting 을 클릭해주세요
플랫폼을 Android로 설정해주세요.
다음으로, Player Setting... 을 클릭해서 Other Setting에있는 Identification에서 Minimum API Level을 안드로이드 Minimum SDK 레벨과 동일하게 설정해주세요 중요합니다.
다음으로 위로 올리면 Company Name이 있습니다. DefaultCompany로 남겨두지 마시고 다른 아무 이름이나 원하는 이름으로 변경해주세요
다음으로 폴더를 생성하겠습니다.
Assets -> Plugins -> Android 순으로 폴더를 제작해주세요.
그곳에 아까 만들어둔 aar 파일을 넣어주세요
이제 Assets 폴더에다 C# 스크립트를 제작하도록 하겠습니다. 코드는 일단 아래 이미지와 같이 만들어 주세요
코드를 보면 new AndroidJavaClass(""); 부분에 보면 빈 문자열을 넣고 있습니다.
안드로이드 프로젝트로 돌아가서 패키지 경로를 확인해주세요
저 같은 경우 com.example.mylibrary라고 돼있는 것을 확인할 수 있습니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class NewBehaviourScript : MonoBehaviour
{
private AndroidJavaObject UnityInstance;
[SerializeField] private Text text;
// Start is called before the first frame update
void Start()
{
AndroidJavaClass ajc = new AndroidJavaClass("com.example.mylibrary.test_String");
string str = ajc.CallStatic<string>("returnString");
text.text = str;
}
}
ajc.CallStatic은 스태틱 메서드를 호출할 때 사용합니다.
ajc.Call 은 일반 메소드를 호출할 때 사용합니다.
Call로 호출을 원한다면 static으로 선언된 싱글턴 메서드를 호출한 후 생성된 Instance를 통해 가능합니다.
아래와 같이 객체를 생성하여 주시기 바랍니다.
PluginManager는 엠티 오브젝트입니다.
플로그인 매니저에 방금 만든 스크립트를 넣어주고 Text에 Text를 드래그 앤 드롭해주세요 무슨 말인지 알죠?
UI text 사이즈를 위와 같이 키우고 폰트 사이즈를 50 정도로 맞춘 다음 글자를 가운데 맞춤을 해주세요
성공적이네요 ㅎㅎ 위 이미지는 모바일에서 구동된 이미지입니다. 그냥 유니티 환경에서 플레이 하면 문자열이 보이지 않게 되네요
일단 간단하게 유니티 플러그인을 실수 없이 만들 수 있도록 구현해보았습니다.
하지만 유니티에서 안드로이드를 사용하고 싶다는 것은 모바일 기능을 이용하고 싶다는 것일 것입니다.
그러면 유니티로 안드로이드 Context를 불러와서 사용해야 하거나 권한 설정을 해야 할 수 있습니다. 그 점에 대해서는 다음 글에서 다루겠습니다. 수고하셨습니다~
'Unity3D' 카테고리의 다른 글
Invoke, contains (0) | 2020.10.27 |
---|---|
[Unity3D] 안드로이드 플러그인 사용해보기 #2 (0) | 2020.08.08 |
[Unity3D] 현재 진행상황을 알리기 위한 화살표 이동 (0) | 2020.07.16 |
[Unity] 트리거 인식을 위한 조건, 버튼 마우스 클릭 반응을 위한 조건 (0) | 2020.06.19 |
Navigation 사용해서 npc 이동 후 비료주기 모션 보여주기 (0) | 2020.06.12 |