(1)新建AS工程-》Empty Activity
packageName 要和Unity中的一致
(2)删除layOut(3)配置gradle:
buildscript {
repositories {
jcenter()
google()
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven{ url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
}
}
allprojects {
repositories {
jcenter()
google()
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven{ url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
}
}
在国内,加上 maven
(3)在unity的安装目录中找到"classes.jar”,或者直接用unity导出AS空工程,lib中copy :unity-classes.jar 到自己的AS工程中然后同步一下,就可以导入unity3d的库,直接继承了
import com.unity3d.player.*;
public class MainActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
new SDKService(this);
new LoginDelegate(this);
}
}
(4)接下来添加辅助的工具类:
package com.xyz.AndroidUnitySDK;
import android.app.Activity;
import android.util.Log;
import com.unity3d.player.UnityPlayer;
public class SDKService
{
private static final String TAG = "__1__SDK";
private Activity context;
private static SDKService sInstance;
public SDKService(final Activity pContext)
{
context = pContext;
sInstance = this;
}
public static SDKService getInstance(){
return sInstance;
}
/**
* Android 调用 unity的函数总入口
* */
public static void onCallResult(String json) {
UnityPlayer.UnitySendMessage("Platform",
"OnCallResult", json.toString());
}
public void jniCall(String functionName,String json)
{
Log.d(TAG, "funcName = " + functionName + ";" + "json = " + json);
if (functionName.equals("initSdk"))
{
initSdk(json);
}
}
public void initSdk(String json)
{
context.runOnUiThread(new Runnable() {
@Override
public void run() {
}
});
}
此类是一个单例模式,实现unity和android之间的交互,的主要作用是:
接受来之unity的调用‘jniCall’函数
android调用unity的函数入口onCallResult