Unity与Android的交互

本文详细介绍了如何在Unity和Android间实现交互,包括创建Android项目、编写Java代码、生成并导入jar包到Unity、以及在Unity中通过脚本调用Java方法等步骤,并附有示例代码。
摘要由CSDN通过智能技术生成

一:Unity与Android的交互。

一:首先安装Android Studio 新建一个项目。然后在新建项目的src目录下新建一个java类:例如:Test如下图所示.
在这里插入图片描述
Test中示例代码如下:

public class Test {
   public static String LOG="LOG";
   public String name=null;
   public static void SetLOG(String log){
       LOG=log;
       Log.d(LOG,log);
   }

   public static String GetLog(){
       Log.d(LOG,LOG);
       return LOG;
   }

    public  void SetName(String name){
        this.name=name;
        Log.d(LOG,name);    
    }

    public String GetName(){
        Log.d(LOG,name);
        return name;
    }

    //显示文字弹窗在安卓设备上,例如清理手机进程后弹出的那个框显示清除多少进程
    public void  ShowMessage(String message){
        Toast.makeText(UnityPlayer.currentActivity,message,Toast.LENGTH_LONG).show();
    }
}

二:代码写好之后,点击Build/Make Project 会在app下生成一个build文件。
在这里插入图片描述
三:找到build文件下的jar包导入到Unity中(在根目录新建一个Plugins文件夹)。
在这里插入图片描述

四:在unity中新建脚本,如下代码。

public class UnityCallJava : MonoBehaviour
{
    /// <summary>
    /// 调用静态的字段和静态的方法
    /// </summary>
    private AndroidJavaClass javaClass;

    /// <summary>
    /// 调用非静态的字段和非静态的方法
    /// </summary>
    private AndroidJavaObject javaObject;

    public InputField setLogFile_Input;
    public InputField GetLogFile_Input;

    public InputField setNameFile_Input;
    public InputField GetNameFile_Input;

    public InputField ShowMessage_Input;

    void Start()
    {
        //com.example.unitycalljava.Test:包名+类名
        javaClass = new AndroidJavaClass("com.example.unitycalljava.Test");
        javaObject = new AndroidJavaObject("com.example.unitycalljava.Test");
    }
    /// <summary>
    /// 调用java脚本里的SetLOG静态方法
    /// </summary>
    public void SetLOG()
    {
        //方法名 ,参数
        javaClass.CallStatic("SetLOG",setLogFile_Input.text);
    }

    /// <summary>
    /// 调用java脚本里的GetLOG静态方法
    /// </summary>
    public void GetLOG()
    {
        GetLogFile_Input.text = javaClass.CallStatic<string>("GetLog");
    }
    /// <summary>
    /// 调用java脚本里的SetName非静态方法
    /// </summary>
    public void SetName()
    {
        javaObject.Call("SetName", setNameFile_Input.text);
    }

    /// <summary>
    /// 调用java脚本里的GetName非静态方法
    /// </summary>
    public void GetName()
    {
        GetNameFile_Input.text = javaObject.Call<string>("GetName");
    }
 	/// <summary>
    /// 显示弹窗
    /// </summary>
    public void ShowMessage()
    {
        javaObject.Call("ShowMessage", ShowMessage_Input.text);
    }
}

五:具体基本方法如上 所示,测试时需要打包进行测试。
测试界面UI:
在这里插入图片描述

二Android 与Unity的交互。

一:找到你unity安装目录下的jar包导入到Android项目中。

我的unity中jar包的路径:C:\Program Files\Unity\Hub\Editor\2019.4.2f1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes

导入项目的位置:如图所示文件夹下
在这里插入图片描述
二:点击导入的jar包右键点击Add As Library…按钮。
在这里插入图片描述
三:直接在需要调用Unity的java类中使用UnityPlayer下的方法即可。
例如:

//需要三个string类型的参数,第一个参数:需要调用的方法所在脚本挂载的gameobject的名字。
//第二个:方法的名字
//第三个:传递的参数,如果没有参数传递("")空。
UnityPlayer.UnitySendMessage("Canvas","GetName","");

这句话是调用上面unity代码中的GetName方法。

如果想具体学习可以参考下面链接视频进行学习。
Unity与Android,ios(一)打包与交互

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值