검색결과 리스트
Unity에 해당되는 글 1건
- 2015.09.29 [Unity] Android Plugin
필요한 것들
- 안드로이드 개발환경, 유니티
안드로이드 스튜디오(기준으로 설명) 혹은 안드로이드를 개발가능한 이클립스
- 안드로이드 스튜디오를 이용하여 프로젝트를 생성한다
blank로 하던 Add No Activity로 하던 안에 있는거 다 삭제
res 안에 것들
- .java 파일을 하나 만든다
package stars.com.starsplugin;
import android.util.Log;
import com.unity3d.player.UnityPlayer;
public class Plugin {
private static Plugin _plugin = null;
private Plugin() {
}
public static Plugin getInstance() {
if (_plugin == null) {
_plugin = new Plugin();
}
return _plugin;
}
public void CallAndroid(String msg)
{
Log.d("MYTEST", "CallAndroid");
String message = msg + "(by CallAndroid)";
UnityPlayer.UnitySendMessage("AndroidManager", "SetLog", message);
}
}
이대로라면 import가 되지 않았다며 빨간줄이 뜰 것이므로
- classes.jar 설정
C:\Program Files\Unity\Editor\Data\PlaybackEngines\androidplayer\development\bin\classes.jar
복사
C:\Users\Administrator\AndroidStudioProjects\project\app\libs
Open Module Settings -> Dependencies -> File dependency -> libs/classes.jar 추가
- Gradle 설정
Gradle Scripts -> build.gradle(Module:app) 열기
아래와 같이 수정
apply plugin: 'com.android.library' // application -> library
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
// applicationId "com."
minSdkVersion 15
targetSdkVersion 22
// versionCode 1
// versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.1'
compile files('libs/classes.jar')
}
//task to delete the old jar
task deleteOldJar(type: Delete) {
delete 'release/AndroidPlugin.jar'
}
//task to export contents as jar
task exportJar(type: Copy) {
from('build/intermediates/bundles/release/')
into('release/')
include('classes.jar')
///Rename the jar
rename('classes.jar', 'AndroidPlugin.jar')
}
exportJar.dependsOn(deleteOldJar, build)
- Make Module App (Ctrl + Shift + F9) 를 실행한다
- 안드로이드 스튜디오의 오른쪽에 보면 Gradle Project가 있다.
Project -> :app -> Tasks -> other -> exportJar을 Run 한다.
- C:\Users\Administrator\AndroidStudioProjects\StarsPlugin\app\release 폴더에 가면
AndroidPlugin.jar 파일이 생긴다.
- UnityProject의 Assets\Plugins\Android 폴더로 옮긴다.
- 유니티 스크립트에서
public void CallJavaFunc(string strFuncName, string strTemp)
{ using (AndroidJavaClass cls = new AndroidJavaClass("stars.com.starsplugin.Plugin")) { using (AndroidJavaObject stars = cls.CallStatic<AndroidJavaObject>("getInstance"))
{
stars.Call(strFuncName, strTemp);
}
} }
public void SetLog(string strJavaLog) { Debug.Log("message from java: " + strJavaLog); GameObject.Find("GameManager").GetComponent<debug>().strLog = strJavaLog; strLog = strJavaLog; }
- 유니티의 함수를 호출하기 위해 유니티에서 Empty Object를 생성하고
GameObject이름을 동일하게 해준다. UnityPlayer.UnitySendMessage("AndroidManager", "SetLog", message);
UnitySendMessage의 정의는 UnitySendMessage("GameObjectName1", "MethodName1", "Message to send");
함수가 있는 스크립트를 추가해줌
잘나온다
- 끗
무슨 NativePlayer니 어쩌니 그딴거 쓸일이 뭐가있나 삽질..
첨부파일 참고
참고 사이트 : http://answers.unity3d.com/questions/437708/jni-exception-using-android-plugin.html
http://docs.unity3d.com/Manual/PluginsForAndroid.html
http://blog.naver.com/bluefallsky/220110061131
gradle 파일 참고 : http://egloos.zum.com/dra784/v/11168585
[C# Parser] NRefactory (0) | 2015.11.03 |
---|---|
[Error] ClickOnce error (0) | 2014.11.21 |
FTP with .NET (C#) (0) | 2014.10.21 |
RECENT COMMENT