Unity5 0与Android交互
发布日期:2021-09-29 04:02:22 浏览次数:27 分类:技术文章

本文共 2835 字,大约阅读时间需要 9 分钟。

分享一下我老师大神的人工智能教程!零基础,通俗易懂!

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

1. 目标

    1) Unity3D可调用Android Java函数(在.jar中)

    2) Java可调用Unity3D函数

    3) Unity3D可调用Android C函数(在.so中)

2. 测试环境

    1) Unity5.0

    2) JDK: jdk-8u25-windows-i586

    3) Android SDK

      4) Eclipse : adt-bundle-windows-x86中自带的

3. 创建Java工程

    第一步

    

    第二步

    第三步

    第四步: Configure Laucher Icon,不做任何修改,不要把你的Image File在这儿加入,它会强行修改Image File的尺寸,在后面把它直接放入res/drawable即可。

     第五步

    

     第六步:Blank Activity采用默认值即可。

     第七步:删除下面红色标记部分

     注:若其基类不是Activity,则在左边PlugInTest上点右键,然后选择Properties,进入如下界面:

    

4. 修改Android工程

4.1 导入Unity5.0 classes.jar

      1) 其中定义了 UnityPlayerActivity<它的基类是Activity>,其源码位置:

      C:\Program Files\Unity\Editor\Data\PlaybackEngines\androidplayer\com\unity3d\player)

      2) classes.jar位于:C:\Program Files\Unity\Editor\Data\PlaybackEngines\androidplayer\release\bin,其导入方法如下图所示:

      

4.2 替换Launcher Icon

      把自己制作的ic_launcher.png覆盖res/drawable-xxx目录中的ic_launcher.png    

4.3 修改MainActivity.java        

package com.example.plugintest;import android.app.Activity;import android.os.Bundle;import com.unity3d.player.UnityPlayerActivity;public class MainActivity extends UnityPlayerActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    }    // only for test, C# in unity will call it    public int GetInt(){     return 1000;    }}

4.4 把Android内容导出到Unity5.0

4.4.1 生成plugintest.jar

      1) 进入PlugInTest的Properties中,并勾选“Is Library”

      2) Project->Clean

      3) Project->Build Project

      4) 生成的plugintest.jar见bin目录

4.4.2 把PlugInTest中内容放入Unity5.0

      把以下内容都于Unity Project的“Assets\Plugins\Android”目录中。

      1)bin目录下的plugintest.jar

      2)bin目录下的AndroidManifest.xml (可根据需要增加其它的Activity或权限)

      3)  整个res目录

      其结果在Unity Project如下图:

    

5. 修改Unity工程

5.1 修改Android 【Player Settings】

5.2 访问Java接口

using UnityEngine;using System.Collections;public class AndroidTest : MonoBehaviour { // Use this for initialization void Start () { }  // Update is called once per frame void Update () {  AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");  AndroidJavaObject jo = jc.GetStatic
("currentActivity");  Debug.Log("*********JerryTest*********" + jo.Call
("GetInt"));  }}

UnityEngine.AndroidJavaClass与java.lang.Class及其子类对应。

UnityEngine.AndroidJavaObject与java.lang.Object及其子类对应。

5.3 导出apk

      File->Build Run

      当导出apk时,可能遇到下面的问题:

         Unable to find unity activity in manifest. You need to make sure orientation attribute is set to fullSensor manually.

      需在AndroidManifest中增加一行:

           全部AndroidManifest如下所示:

   
   
   
       
           
               
               
           
           
           

6. Android Native Plug

     对于Android平台(armv7,x86)的Native Plugin, lib*.so应放于以下目录中:

     1) X86平台:     Assets/Plugins/Android/libs/x86/

     2) armv7平台:Assets/Plugins/Android/libs/armeabi-v7a/

参考:

           

给我老师的人工智能教程打call!

这里写图片描述

转载地址:https://blog.csdn.net/hddghhfd/article/details/84024374 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Android热插拔事件处理流程--Vold
下一篇:机器学习数据集 Dataset 汇总

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月07日 08时56分07秒