336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


유니티3D 안드로이드(Android) 플러그인(Plugin) 만들기(추가)


[UNITY] 안드로이드 플러그인 만들기 에 추가적으로 하나더 써보려고 합니다.


Java 코드단에서 UnityPlayerActivity를 상속 받는 곳에서 구현을 했었는데,


그게 아닌 타 클래스 만들어서 하는 부분도 추가합니다. 


Java에서 타 클래스를 만들고 구현을 한 다음 Unity에서 클래스를 찾아서 호출하면 됩니다.


간단히 예를 들겠습니다.



< Java >


1. 프로젝트 만들고(패키지명은 원하시는걸로), 클래스를 하나 추가합니다.


여기에서는 TestAClass가 새로 생성한 클래스 입니다.




2. 기본 클래스 파일입니다. UnityPlayerActivity를 상속해 줍니다.


* UnityPlayerActivity상속없이 자바 클래스만 추가해서 되는지는 아직 못해봤네요. 혹 해보신분 댓글로 부탁드립니다.




3. 유니티애서 호출할 클래스 입니다. 


간단히 GetSum()이라는 함수만 추가하겠습니다.





< Unity >

* 우선 AndroidManifest.xml 확인해주세요. 많은 분들이 패키지명이 달라서 안된경우가 많았습니다.


using UnityEngine;
using System.Collections;

public class PluginCalling : MonoBehaviour {

    private static AndroidJavaObject myObj;

    string messge = "init";

	// Use this for initialization
	void Start () {
#if UNITY_ANDROID && !UNITY_EDITOR
	    myObj = new AndroidJavaObject( "com.mine.androidplugin.TestAClass" );
#endif
	}
	
	// Update is called once per frame
	void Update () {
	
	}

    void OnGUI()
    {
        // 이렇게 접근하는 방법은, static이나 non-static 모두
        // 동일한 방법으로 접근 가능하다
        if (GUI.Button(new Rect(100, 100, 100, 50), "GetSum"))
        {
#if UNITY_ANDROID && !UNITY_EDITOR
            messge += ("\n" + myObj.Call("GetSum", 123, 456).ToString());
#endif
        }

        GUI.Label(new Rect(Screen.width / 2 - 350, Screen.height / 2 - 150, 700, 300), messge);
    }
}


별거 없네요. 그냥 AndroidJavaObject로 오브젝트 생성하고 호출하는 것 입니다.


도움되셨길 바랍니다.

+ Recent posts