Unity与Android的通信

Unity与Android的通信

Android

  1. 下载eclipse,连接https://pan.baidu.com/s/1Bc2xZGgXr8cC6NMN1QK0iQ
  2. 下载Java的JDK,从Java官网上下载或用我在压缩包中提供的jdk1.7也行
  3. 配置java JDK的运行环境,这个自己百度就行,网上一大堆
  4. 打开eclipse,在eclipse工具和AndroidSDK\eclipse工具\新建文件夹\android-sdk-windows\android-sdk-windows\eclipse 目录下,打开后设置Android SDK的版本
  5. 点击窗口上方的Window/Preference选项
    设置Android SDK版本
  6. 创建一个Android工程
    创建项目
    项目设置1
    接下来一路next,直到finish创建一个工程为止
  7. 第一次创建项目你会发现自动生成了一个appcompat_v7工程,并且还会报错
    appcompat_v7是Google自己的一个兼容包,就是一个支持库,能让2.1以上全使用上4.0版本的界面,处理办法关闭项目再次打开就行了,要想创建项目不出现appcompat_v7,在开始创建项目时设置SFD版本4.0以上就行
  8. 导入unity的classes.jar
    这里写图片描述
  9. 写测试通信方法
    这里写图片描述
  10. 最后到处jar包
    这里写图片描述
    这里写图片描述
    最后finih,产生一个jar文件,后面再Unity中使用

Unity

1_ . 创建一个和Jar包通信的脚本,代码如下

using UnityEngine;
using System.Collections;

public class MySDK : MonoBehaviour
{
    public static void Call(string msg)
    {
        #if UNITY_IPHONE //苹果环境

        #endif

        #if UNITY_ANDROID && !UNITY_EDITOR //android和非uniyty编辑器环境
                CallAndroid(msg);
        #endif
    }
    private static void CallAndroid(string msg)
    {
        Debug.Log("MySDK_Call--------CallAndroid");
        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");//定义AndroidJavaClass 对象
        Debug.Log("MySDK_Call--------CallAndroid-->jc---->" + jc);
        AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");//得到个AndroidJavaObject对象
        Debug.Log("MySDK_Call--------CallAndroid-->jo---->" + jo);
        jo.Call("Test");//调用jar包的Test方法
        jo.Call("Text1", msg);//调用jar包的Test1方法
        jo.Call("Text2", 1, 2);//调用jar包的Test2方法
        Debug.Log("MySDK_Call--------CallAndroid结束");
    }
}

2_. 在Unity中创建3个按钮,添加脚本Test
这里写图片描述

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Test : MonoBehaviour
{
    //在外面拖拽,组件对象
    public Button test;
    public Button test1;
    public Button test2;
    void Start()
    {
        test.onClick.AddListener(TestClick);
        test1.onClick.AddListener(Test1Click);
        test2.onClick.AddListener(Test2Click);
    }

    /// <summary>
    /// 测试Test方法点击
    /// </summary>
    public void TestClick()
    {
        Debug.Log("测试Test方法点击");
        MySDK.Call("Unity测试Test方法点击--->");
    }
    /// <summary>
    /// 测试Test1方法点击
    /// </summary>
    public void Test1Click()
    {
        Debug.Log("测试Test1方法点击");
        MySDK.Call("Unity测试Test1方法点击--->");
    }
    /// <summary>
    /// 测试Test2方法低级
    /// </summary>
    public void Test2Click()
    {
        Debug.Log("测试Test2方法点击");
        MySDK.Call("Unity测试Test2方法点击--->");
    }
    /// <summary>
    /// 接收jar的方法
    /// </summary>
    /// <param name="msg"></param>
    public void OnCallBack(string msg)
    {
        Debug.Log("这是Unity接收jar的方法信息--->" + msg);
    }
}

3_. ①在Unity的Plugins目录中新建Android文件夹,在Android目录下新建libs和res目录,libs是放项目引用的各种jar文件的,res是存放项目的资源如图片,注意我们在创建Android项目时引入Unity的class.jar文件,但这个文件不能放在libs下,因为Unity本身都自带有这个jar包,也就是说jar不能重复。
②将Android中res文件夹下的内容拷贝Unity 的res中,但只需保留其中的几个文件夹,具体保留项如下图
③最后将Android工程的XML文件拷贝到Unity的Plugins目录中新建Android文件夹下,在修改XML

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xianwanqipai.qipailaile"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="23" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="GA测试"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
      <activity
          android:name=".MainActivity"
          android:configChanges="keyboardHidden|orientation|screenSize"
          android:label="@string/app_name"
          android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
        <intent-filter>
          <action android:name="android.intent.action.MAIN" />

          <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
      </activity>
    </application>

</manifest>

4_. 将刚才自己创建的jar包和android-support-v4.jar放在libs目录下
这里写图片描述
5_.最后打包设置
修改Bundle Identifier和keystore(不会自己百度),
有可能打包失败,如出现应用未安装–>是手机已经存在一个包名一样的app了,闪退说明的Plugins的设置有问题
6_.在项目中导入log插件
https://pan.baidu.com/s/1msXlwtOEElH1iiuJqlFYpw
如果项目用的是UGUI,需要注释一些代码
这里写图片描述
7_.测试app安装到手机,打开后,点击测试测试Test()按钮,在屏幕转几下,看log
这里写图片描述
8_项目地址
https://gitee.com/GAXM/communication_test_project_between_unity_and_android.git
在java项目中如果已经有appcompat_v7工具,压缩包中的appcompat_v7就不需要了

猜你喜欢

转载自blog.csdn.net/baidu_39447417/article/details/79776162