1. 首先我们要创建一个android项目

  2. 因为项目需要使用Unity提供的接口,所以需要将接口classes.jar引入至当前工程但中。接口包的所在地,打开Finder->应用程序->Unity->点击Unity图标,鼠标右键选择“显示包内容”->Contents->PlaybackEngines->AndroidPlayer->bin->classes.jar 。接口包引入工程后,开始编写JAVA代码。

  3. UnityTestActivity是主Activity,Unity程序一起动就会调用这个Activity,它是在AndroidManifest.xml中配置的。它需要继承UnityPlayerActivity,然而它就是刚刚我们引入的classes.jar包中提供的接口类。UnityTestActivity对外提供了两个方法接口,StartActivity0(String name) 方法与StartActivity1(String name)方法,这两个方法是在Unity中使用C#脚本调用的,意思是调用后程序将打开一个新的Activity,参数name也是由C#脚本传递过来的,接着将传递的String参数继续传递给新打开的Activity。

  4. 接下来就是设置xml文件和布局文件了。对于会android编程的同学就很熟悉了。

  5. 把写好的java代码发布成jar包。接下来就创建unity工程,Unity工程中文件夹的结构如下,Plugins->Android的名称不能修改,必需保持一致。接着把Eclipse中Android的工程文件拷贝至这里,除了Android工程中的src文件夹,将其它文件夹全部拷贝至Plugins->Android文件夹中。最后在Plugins->Android文件夹中创建bin文件夹,然后将刚刚生成的.jar文件拷贝进来,jar的名称可以随便修改,但是jar包里面必须是com->xys->你的class文件,否则运行程序后提示找不到类文件。

  6. 接下来就是如何在C#中调用android的方法的代码了。

    加入如下代码。

    AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");

    AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");

    jo.Call("StartActivity0","第一个Activity");

    先得到AndroidJavaClass,然后得到AndroidjavaObject就是当前Activity的对象,也就是我们在上面创建的主UnityTestActivity.JAVA。拿到它的对象后调用jo.Call()参数1表示调用UnityTestActivity.JAVA类中的方法名称,参数2表示该方法传递过去的参数。如下图所示:“第一个Activity”与“第二个Activit”就是我在C#中传递过去的字符串。

  7. 7
    发布成android平台apk

Unity 中调用Android的JAVA代码的更多相关文章

  1. java程序员图文并茂细说Unity中调用Android的接口

    http://bbs.csdn.net/topics/391876421 最近做一个项目,为同事提供接口,能使他在Unity中调用Android中的函数来实现QQ登陆并获取用户信息.按照一些书上和一些 ...

  2. js调用android本地java代码

    js调用android本地java代码 当在Android上使用WebView控件开发一个Web应用时,可以创建一个通过Javascript调用Android端java代码的接口.也就是可以通过Jav ...

  3. 在xml中调用自己用java代码定义的View

    1.在res中new一个class继承view.View,重写ondraw方法,写出自己的view package com.zzw.myView; import android.content.Con ...

  4. 3D语音天气球(源码分享)——在Unity中使用Android语音服务

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 这个项目准备分四部分介绍: 一:创建可旋转的"3D球":3 ...

  5. 使用DWR实现JS调用服务端Java代码

    DWR简介 DWR全称Direct Web Remoting,是一款非常优秀的远程过程调用(Remote Procedure Call)框架,通过浏览器提供的Ajax引擎实现在前端页面的JS代码中调用 ...

  6. Unity中加入Android项目的Build步骤

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 简介: 有的项目需要在Android中加入Unity功能,例如ANDROID应用中嵌入Un ...

  7. Android逆向-java代码基础

    作者:I春秋作家——HAI_ 0×00 前言 看这篇可以先看看之前的文章,进行一个了解.Android逆向-java代码基础(1)Android逆向-java代码基础(2) 之前看到有大佬用smali ...

  8. Unity中调用Windows窗口句柄以及根据需求设置并且解决扩展屏窗体显示错乱/位置错误的Bug

    问题背景: 现在在搞PC端应用开发,我们开发中需要调用系统的窗口以及需要最大化最小化,缩放窗口拖拽窗口,以及设置窗口位置,去边框等功能 解决根据: 使用user32.dll解决 具体功能: Unity ...

  9. Unity直接调用Android Toast

    Unity直接调用Android Toast 这两天在搭一套UI框架,想把Android的Toast直接集成上去,有不想直接打jar包,所有写了个C#直接调用,废话不多说,直接干货: using Un ...

随机推荐

  1. linux 7 安装KVM

    首先,在安装GUI的linux 7系统下,安装KVM 执行命令 #yum install qemu-kvm qemu-kvm-tools virt-manager libvirt virt-insta ...

  2. Codeforces 348D DP + LGV定理

    题意及思路:https://www.cnblogs.com/chaoswr/p/9460378.html 代码: #include <bits/stdc++.h> #define LL l ...

  3. Mybatis调用Oracle中的存储过程和function

    一.Mybatis调用存储过程 1 在数据库中创建以下的存储过程create or replace procedure pro_hello(p_user_name in varchar2,p_resu ...

  4. Java Collection - PriorityQueue 优先队列

    总结 优先队列的作用是能保证每次取出的元素都是队列中权值最小的(Java的优先队列每次取最小元素,C++的优先队列每次取最大元素).这里牵涉到了大小关系,元素大小的评判可以通过元素本身的自然顺序(na ...

  5. 管理mysql

    要管理MySQL,可以使用可视化图形界面MySQL Workbench. MySQL Workbench可以用可视化的方式查询.创建和修改数据库表,但是,归根到底,MySQL Workbench是一个 ...

  6. Eclipse中安装插件的方法

    eclipse插件的安装方法大体有以下三种:  第一种:直接复制法:假设你的Eclipse的在(C:\eclipse), 解压你下载的 eclipse 插件或者安装eclipse 插件到指定目录AA( ...

  7. docker镜像下载加速(5)

    镜像下载加速 由于 Docker Hub 的服务器在国外,下载镜像会比较慢.幸好 DaoCloud 为我们提供了免费的国内镜像服务. 下面介绍如果使用镜像. 在 daocloud.io 免费注册一个用 ...

  8. [Go语言]cgo用法演示

        经历了数十年发展的C语言,各种各样的现成的库已经非常丰富.通过cgo,可以在Go语言中使用C语言代码,充分利用好现有的“轮子”. 本文所有代码,在下述环境中调试通过: Windows 8.1 ...

  9. nginx代理一个服务器上所有域名

    1. 主配置文件不需要更改任何配置2. 在vhosts目录下需要建立两个文件,一个是servername 列表文件,一个是虚拟主机配置文件两个文件内容分别为 #() servername server ...

  10. VirtualBox的源码学习

    VMM重要的组件 TRPM (Trap Manager) PGM (Page Manager) REM (Recompiled Execution Manager) EM (Execution Man ...