主要是 根据 参考资料3 的内容。本文尽量减少文字的 描述。参考资料1 有 一点 问题。

本文的内容需要 对照 参考资料3 来查看

建立 新的工程。

unity打的安卓工程目录在哪 unity工程文件在哪_unity打的安卓工程目录在哪

unity打的安卓工程目录在哪 unity工程文件在哪_unity打的安卓工程目录在哪_02

unity打的安卓工程目录在哪 unity工程文件在哪_Text_03

unity打的安卓工程目录在哪 unity工程文件在哪_Android_04

 

点击 FINISH 按钮,新建工程。

unity打的安卓工程目录在哪 unity工程文件在哪_unity打的安卓工程目录在哪_05

 

 

 

 

找到 libs 的文件路径。右键 libs 文件夹,find in path 。

unity打的安卓工程目录在哪 unity工程文件在哪_Text_06

 

按 esc 按键 退出 find in path。

打开文件路径。

unity打的安卓工程目录在哪 unity工程文件在哪_unity打的安卓工程目录在哪_07

 

安装路径下 的 UNITY 文件夹。(具体 UNITY 的设置 参考下一篇文章 参考资料2)

D:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes
classes.jar
复制粘贴 到 
E:\Android\AndroidStudioProjects\UnityTest\app\libs

文件夹,如下图所示。

unity打的安卓工程目录在哪 unity工程文件在哪_Text_08

 

 

unity打的安卓工程目录在哪 unity工程文件在哪_xml_09

 

unity打的安卓工程目录在哪 unity工程文件在哪_Android_10

 

正常情况下,这里就会有如下图所示。

unity打的安卓工程目录在哪 unity工程文件在哪_Android_11

 

unity打的安卓工程目录在哪 unity工程文件在哪_xml_12

unity打的安卓工程目录在哪 unity工程文件在哪_Android_13

 

 

unity打的安卓工程目录在哪 unity工程文件在哪_Text_14

不做任何 处理,点击 FINISH 按钮后。

就新建了MainActivity ,右边是初始脚本。

 

unity打的安卓工程目录在哪 unity工程文件在哪_xml_15

 

unity打的安卓工程目录在哪 unity工程文件在哪_Text_16

 

删除

<activity android:name=".MainActivity"></activity>

 

unity打的安卓工程目录在哪 unity工程文件在哪_Android_17

 

复制初始模块 的这个app 的 mainfests 文件夹的 AndroidMainfest.xml 文件的内容。

unity打的安卓工程目录在哪 unity工程文件在哪_xml_18

 

粘贴到 新建unity_exchage模块 的这个unity_exchage 的 mainfests 文件夹的 AndroidMainfest.xml 文件的内容。

unity打的安卓工程目录在哪 unity工程文件在哪_xml_19

 

由于这2个模块 中都有 MainActivity ,原文并没有 说明 是哪个 MainActivity。因此 先 对 app 的MainActivity 进行修改。

unity打的安卓工程目录在哪 unity工程文件在哪_xml_20

后来发现 是 unity_exchage 的 MainActivity

unity打的安卓工程目录在哪 unity工程文件在哪_Text_21

 

 

 

import com.unity3d.player.UnityPlayerActivity;

unity打的安卓工程目录在哪 unity工程文件在哪_xml_22

 

 

这个时候,如下所示。


unity打的安卓工程目录在哪 unity工程文件在哪_Android_23

 

改为如下所示。


unity打的安卓工程目录在哪 unity工程文件在哪_Text_24




下面就是在Android中编写Unity要调用的方法了,例如我这里只写一个简单的两数求和的方法:

 

//两树求和
public int add(int a,int b)
{
    return a+b;
}

 

unity打的安卓工程目录在哪 unity工程文件在哪_xml_25

 

选中 unity_exchange 点击build -- Make Module 'unityexchange'

unity打的安卓工程目录在哪 unity工程文件在哪_xml_26

 

等待一下,就会显示如下所示。如果没有,就重新试几次。

unity打的安卓工程目录在哪 unity工程文件在哪_xml_27

 

使用 Build -- Make Project 或者 Build -- Rebuild Project 重新编译工程。

工程 下 的 unity_exchange 的 build 的 intermediates 的 bundles 的debug没有如下图 所示 的文件,就多 重新编译工程几次。

unity打的安卓工程目录在哪 unity工程文件在哪_xml_28

 

右键 debug 文件夹,show in explorer

unity打的安卓工程目录在哪 unity工程文件在哪_unity打的安卓工程目录在哪_29

unity打的安卓工程目录在哪 unity工程文件在哪_unity打的安卓工程目录在哪_30

 

使用 Build -- Make Project 或者 Build -- Rebuild Project 重新编译工程。
然后把debug文件夹下的classes.jar文件移动到libs文件夹中,并且把libs文件夹中的class.jar文件替换掉。然后将debug文件夹下的libs文件夹、res文件夹、AndroidManifest.xml文件导入到Unity的Assets/Plugins/Android文件夹下(没有这个文件夹需先创建)。

unity打的安卓工程目录在哪 unity工程文件在哪_Text_31



 

AndroidManifest.xml就是 如下图所示,的01_Unity_Message3/unity_exchange/src/main/AndroidManifest.xml

unity打的安卓工程目录在哪 unity工程文件在哪_Text_32

如果下图中没有 AndroidManifest.xml  文件,就把上图所示的AndroidManifest.xml  复制粘贴到下面。

就把 把下面这3个文件(包含   AndroidManifest.xml )复制粘贴到 如下图所示的  Unity 的位置。

Plugins/Android/

unity打的安卓工程目录在哪 unity工程文件在哪_unity打的安卓工程目录在哪_33



unity打的安卓工程目录在哪 unity工程文件在哪_Android_34



正常 的文件 结构如下所示。从 AS3.0 导入 过来的文件,都在 Plugins-- Android 里面

unity打的安卓工程目录在哪 unity工程文件在哪_xml_35




新建脚本,挂载 上 Main Camera 上。

unity打的安卓工程目录在哪 unity工程文件在哪_Text_36

 


1. using System.Collections;  
2. using System.Collections.Generic;  
3. using UnityEngine;  
4. using UnityEngine.UI;//使用 该引用,才能获得 Text 组件。  
5.   
6. public class Android_Test : MonoBehaviour {  
7.   
8.     private Transform canvasTras;//UGUI的Canvas  
9.     private Text text;//用来显示 界面的文本  
10.     private Button btn;//前端的按钮  
11.   
12.     private AndroidJavaObject jo = null;  
13.   
14.   
15.   
16.     // Use this for initialization  
17.     void Start () {  
18.         //固定写法  
19.         AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");  
20.         jo = jc.GetStatic<AndroidJavaObject>("currentActivity");//获取当前Activity对象,即Android中的MainActivity  
21.   
22.         canvasTras = GameObject.Find("Canvas").transform;  
23.         text = canvasTras.Find("Text").GetComponent<Text>();  
24.         btn = canvasTras.Find("Button").GetComponent<Button>();  
25.         btn.onClick.AddListener(Click);//按钮点击事件监听下面的Click()方法  
26.   
27.     }  
28.   
29.     //这个方法是在界面点击按钮的时候调用,使用的是UGUI的BUTTON组件  
30.     public void Click()  
31.     {  
32.         text.text = "";//点击的时候先清空  
33.         int res = jo.Call<int>("add", 56, 100);//调用Android中的方法,"add"为方法名字,56,100,分别是想加的参数  
34.         text.text = "56 + 100的结果是:" + res.ToString();//显示前端  
35.     }  
36. }

 

在 Unity 的 GameObject -- UI 新建 Text 和 Button

unity打的安卓工程目录在哪 unity工程文件在哪_Android_37

 

布局如下所示


unity打的安卓工程目录在哪 unity工程文件在哪_unity打的安卓工程目录在哪_38




复制 package 的名字

unity打的安卓工程目录在哪 unity工程文件在哪_xml_39

 

粘贴到这里 的package 位置。

unity打的安卓工程目录在哪 unity工程文件在哪_xml_40

 

 

unity打的安卓工程目录在哪 unity工程文件在哪_xml_41





unity打的安卓工程目录在哪 unity工程文件在哪_Android_42

点击 update android SDK。等待读条结束,UNITY 后台程序。


unity打的安卓工程目录在哪 unity工程文件在哪_unity打的安卓工程目录在哪_43

在虚拟机 ,上 测试 APK

unity打的安卓工程目录在哪 unity工程文件在哪_Text_44

真机测试

如果是正常的,就会 进入 程序显示,made with unity

unity打的安卓工程目录在哪 unity工程文件在哪_Text_45

unity打的安卓工程目录在哪 unity工程文件在哪_unity打的安卓工程目录在哪_46