赞
踩
Unity和安卓手机进行交互,是我们开发游戏中最常见的场景。本教程将从一个简单的例子来演示一下。
本教程需要用到Android Studio2021.1.1
这个就是用来生成一个jar包的
不同视窗排版不一样,自己调整一下
比如我的目录:C:\Program Files\Unity\Hub\Editor\2021.3.33f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\il2cpp\Release\Classes
注意选择自己需要的版本
package com.hao.mylibrary; import android.util.Log; import com.unity3d.player.UnityPlayer; public class JavaGame { //初始化 public static void Init() { // 打印: JavaGame: Init Log.d("JavaGame", "Init"); } //获取渠道 private String GetChannel() { Log.d("JavaGame", "GetChannel"); return "xiaomi"; } //加法 public int Add(int num1,int num2) { Log.d("JavaGame", "Add"); return num1 + num2; } //登录 public static void Login() { // 打印: JavaGame: Login Log.d("JavaGame", "Login"); UnityPlayer.UnitySendMessage("UnityObj", "LoginSucceed", "abc12345"); } }
task makeJar(type: Copy) { //删除存在的 delete 'build/libs/testlibrary.jar' //设置拷贝的文件 from('build/intermediates/aar_main_jar/release/') //打进jar包后的文件目录 into('build/libs/') //将classes.jar放入build/libs/目录下 //include ,exclude参数来设置过滤 include('classes.jar') //重命名 rename ('classes.jar', 'testlibrary.jar') } makeJar.dependsOn(build)
using UnityEngine; using UnityEngine.UI; public class Game : MonoBehaviour { public Text ChannelText; public Text AddText; void Start() { AndroidJavaObject javaObject = new AndroidJavaObject("com.hao.mylibrary.JavaGame"); // 静态方法 javaObject.CallStatic("Init"); // 非静态无参方法,返回一个渠道名 string Channel = javaObject.Call<string>("GetChannel"); ChannelText.text = Channel; // 非静态,带参数方法 int num = javaObject.Call<int>("Add", 2,6); AddText.text = num.ToString(); //调用登录,登录成功会返回 javaObject.CallStatic("Login"); } }
UnityObj必须要和java里的名称一致,不然Unity就接收不到java的返回
using UnityEngine;
using UnityEngine.UI;
public class UnityObj : MonoBehaviour
{
public Text mText;
private void LoginSucceed(string value)
{
mText.text = value;
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。