适用于新版unity引擎中class.jar包去掉了UnityPlayerActivity,大概是2019之后的版本。
由于新版unity引擎中class.jar包去掉了UnityPlayerActivity,导致Android studio中无法直接继承。另外在Android studio中在onCreate函数里使用UnityPlayer.UnitySendMessage无法调起unity中的函数,暂时不知道原因。处理方法:在unity中先调用安卓方法,再回调unity函数。
查阅相关信息后,示例如下:
Android Studio:(将unity引擎相关class.jar引入项目依赖)
package com.example.testlib;
import android.app.Activity;
import android.os.Bundle;
import androidx.annotation.Nullable;
import com.unity3d.player.UnityPlayer;
public class MainActivity extends Activity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//此处调用UnitySendMessage在unity中无法接收,需在unity先调用安卓方法
}
public int NumberCount(int number)
{
//调用Unity方法ReceiveStr,传递数据AndroidData。需要依赖对应unity版本的Class.jar包
UnityPlayer.UnitySendMessage("SendData","ReceiveStr","AndroidData");
return number*2;
}
}
Unity:
using System;
using UnityEngine;
using UnityEngine.UI;
public class ReceiveData : MonoBehaviour
{
public Text numberT;
public Text receiveT;
private int number = 0;
private void Start()
{
CallNumber();
}
private void CallNumber()
{
try
{
//注释1
AndroidJavaObject jo = new AndroidJavaObject("com.example.testlib.MainActivity");
number= jo.Call<int>("NumberCount", 2);//调用安卓方法NumberCount
numberT.text ="计算结果:"+ number.ToString ();
}
catch (Exception e)
{
numberT.text = "Failed:" + e.Message;
}
}
public void ReceiveStr(string str)
{
receiveT.text = "接收:" + str;
}
}