1.新建Android lib工程New->New Module
2.选择Android Library
3.输入package name 这个要和Unity的包名一致
4.在新建的工程下如图位置new 一个 EmptyActivity
5.在android工程下的libs文件里添加unity的jar包
Unity中jar有两个路径这个要取决于unity的打包方式
在unity中playersettings下面的otherSetting里的scripting Backend中有Mono和il2cpp两个选项,对应的就Unity/Editor/Data/PlaybackEngines/AndroidPlayer/Variations下的两个文件夹,去里面找到对应需要的class.jar
6. 将class.jar复制到libs下面点击Add AsLibrary导入
7.在unity中新建AndroidPlugin脚本来调用java
using UnityEngine;
public class Unity_Android : MonoBehaviour
{
private AndroidJavaObject m_AndroidJavaObject = null;
void Start()
{
AndroidJavaClass androidJavaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
m_AndroidJavaObject = androidJavaClass.GetStatic<AndroidJavaObject>("currentActivity");
if(m_AndroidJavaObject != null)
{
m_AndroidJavaObject.Call("CallUnityMethod", "Hello World");
Debug.Log("Unity Call");
}
}
public void UnityMethod(string str)
{
Debug.Log("Android: " + str);
}
}
8.在unity场景中新建一个gameobject,并且把脚本挂在上面
9.将Android工程里的activity修改一下
package com.cnsd.unitygame;
import android.os.Bundle;
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;
public class MainActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public void CallUnityMethod(String str)
{
System.out.print("Android Call");
UnityPlayer.UnitySendMessage("Driver", "UnityMethod", str);
}
}
这里的CallUnityMethod方面在unity的脚本中有调用,里面在调用“Driver”这个gameObject上挂着的脚本里的对应函数
10.make一下Android工程
11.make完以后在build/intermediates下面的manifests里面有需要的manifest文件
Packaged-class下面有class.jar文件
Packaged-res/debug下面有layout和values文件
12.将需要的文件对应复制到unity里面
注意这里的androidManifest需要修改一下
手动加一些属性,复制过来的不太全,请参照下面的
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.cnsd.unitygame"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="28" />
<application
android:label="@string/app_name">
<activity android:name="com.cnsd.unitygame.MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
13.最后unity打包的时候要选择这一项:
14.打出apk运行就能看到日志了