Unity 和 Android 交互 环境配置篇

本篇只牵扯到简单的交互。没有SDK接入

使用的交互方式是AAR

1,首先先确定好包名

新建Androidstudio工程 

先选择 新建工程的Edit 选择修改包名

Unity 和 Android 交互 环境配置篇_第1张图片Unity 和 Android 交互 环境配置篇_第2张图片

新建Unity端

比较重点注意的我会标注出来

这个标注的Script Backend 决定了再安卓端要使用的jre是什么文件夹下的

Unity 和 Android 交互 环境配置篇_第3张图片

2,新建双端工程

中间有很多坑  都是慢慢趟出来的 当前的Unity版本是2018.4.0    新建Unity确认包名 添加Plugins文件夹再在Plugins文件夹内创建Android文件夹  Unity 端暂时告一段落

确认好包名以后继续创建工程 Androidstudio工程

1,Unity 和 Android 交互 环境配置篇_第4张图片

2,Unity 和 Android 交互 环境配置篇_第5张图片

3,Unity 和 Android 交互 环境配置篇_第6张图片

4,Unity 和 Android 交互 环境配置篇_第7张图片

5,完成以后等待编译 编译完成以后接着新建module  File->New->New Module..

Unity 和 Android 交互 环境配置篇_第8张图片

6,Unity 和 Android 交互 环境配置篇_第9张图片

7,Unity 和 Android 交互 环境配置篇_第10张图片

8,修改包名和Library名字

Unity 和 Android 交互 环境配置篇_第11张图片

9,等待编译完成 点击选择 Project  这个就是刚才创建的labrary

Unity 和 Android 交互 环境配置篇_第12张图片Unity 和 Android 交互 环境配置篇_第13张图片

10,最重要的一步  就是上面提到的Script Backend 如果是mono    倒入 Unity的jar包的时候就要选择mono 入股是il2cpp 就选择il2cpp下面的jar 。Unity jar 包 路径 在 Unity安装路径,Editor-->Data-->PlaybackEngines-->AndroidPlayer-->Variations-->mono/il2cpp(这里根据你的unity编译类型来选择)-->Release-->Classes 

Unity 和 Android 交互 环境配置篇_第14张图片

把这个复制 粘贴到刚才项目的 libs下

Unity 和 Android 交互 环境配置篇_第15张图片

Unity 和 Android 交互 环境配置篇_第16张图片

11,选择AandroidStudio 的File下Project Structure 选择刚才新建的labrary 也就是andunitytest 再选择Dependencies 选择+号 选择  Jar dependency  

Unity 和 Android 交互 环境配置篇_第17张图片Unity 和 Android 交互 环境配置篇_第18张图片

Unity 和 Android 交互 环境配置篇_第19张图片

选择刚才倒入的Unity的jar 选择ok

Unity 和 Android 交互 环境配置篇_第20张图片

Scope 选择 什么还是待定  因为这个是Unity 新出的 以后导出aar以后还要删除Libs下面的jar  英 (目前打包的时候会打包libs 和文件夹下的 jar   为了提前不导出还要设置一步 参考下一篇博客)

Unity 和 Android 交互 环境配置篇_第21张图片

然后选择ok

12,先选择安卓模式 找到对应的library 新建一个空的界面

Unity 和 Android 交互 环境配置篇_第22张图片

Unity 和 Android 交互 环境配置篇_第23张图片

13,复制App下面的AndroidManifest文件的application内容到andunitytest的AndroidManifest  这时候会有很多错误 我们慢慢解决

Unity 和 Android 交互 环境配置篇_第24张图片

鼠标右键选择打开 Res

Unity 和 Android 交互 环境配置篇_第25张图片

打开随便复制 命名mipmap 然后复制到刚才的res下 也是右键打开

 

Unity 和 Android 交互 环境配置篇_第26张图片

 

然后添加   到这里  再删除红色报错行 小心别删除>括号

Unity 和 Android 交互 环境配置篇_第27张图片

14,打开刚才新建的MainActivity

Unity 和 Android 交互 环境配置篇_第28张图片

修改代码

package com.shiyuan.unityandandroidinteractive;
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   int UnityCAndroid(int a ,int b){
        //调用Unity中的函数 显示安卓这边调用成功
        //1Unity该函数所在地脚本所挂的物体  方法名  要穿的参数
        UnityPlayer.UnitySendMessage("GameRoot","AndroidCUnity","Hi~ I am Android");
        return  a+b;
    }
}

我看别人说还要注释这个  

Unity 和 Android 交互 环境配置篇_第29张图片

然后

Unity 和 Android 交互 环境配置篇_第30张图片

 

运行完成以后生成的aar包

Unity 和 Android 交互 环境配置篇_第31张图片

然后把aar复制到Unity工程的路径 然后再把androidmanifest 复制出来一份 (如果要设置刚才那个博客的 打包不出来libs文件夹 就不用删除了)

Unity 和 Android 交互 环境配置篇_第32张图片

再删除libs下面的 jre

修改拖出来的androidmanifest

Unity 和 Android 交互 环境配置篇_第33张图片

15,编写Unity代码


using UnityEngine;
using UnityEngine.UI;

public class NewBehaviourScript : MonoBehaviour
{
    public Text _inttext, _stringText;
    public void OnCkick()
    {
        AndroidJavaClass javaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");

        AndroidJavaObject ac = javaClass.GetStatic("currentActivity");
        int a = ac.Call("UnityCAndroid", 12, 16);
        _inttext.text = a.ToString();

    }
    public void AndroidCUnity(string a)
    {
        _stringText.text = a;
    }
}
先介绍一下u3d中调用android的一些API 
UnityPlayer是unity3d自身的一个jar包,两端通信的关键, 
currentActivity是android需要的上下文,这两个东西你可以当作是调用某些android方法需要的参数,记下就行

AndroidJavaClass ajc=new AndroidJavaClass(“com.unity3d.player.UnityPlayer”); 
AndroidJavaObject ajo=ajc.GetStatic(“currentActivity”);

jo.Call(method ,parameter );//调用实例方法 
jo.Get(method ,parameter );//获取实例变量(非静态) 
jo.Set(method ,parameter );//设置实例 变量(非静态) 
jo.CallStatic(method ,parameter );//调用静态变量(非静态) 
jo.GetStatic (method ,parameter );//获取静态变量 
jo.SetStatic (method ,parameter );//设置静态变量  

 

然后 代码挂载canvas上 canvas名字改为GameRoot

然后打包Apk 安装在手机

Unity 和 Android 交互 环境配置篇_第34张图片

你可能感兴趣的:(Android,Androidstudio)