1.  添加Unity的classes.jar文件

创建一个Android工程AndroidUnityDemo。

由于Unity的版本不同,直接在Unity安装包文件夹里面搜索classes.jar文件,如果有多个classes.jar文件,一般选择的是mono/Release文件夹下的classes.jar文件。

将classes.jar文件放在app文件下的libs文件夹下。

然后,更新一下。

2.  编写Android类

打开MainActivity.java类,让MainActivity类继承于UnityPlayerActivity类,如果提示类不存在,说明unity的classe.jar文件没有加载进来。
删除setContentView(R.layout.activity_main);
MainActivity.java

 1 package com.xxxxxx.androidunitydemo; 2  3 import android.os.Bundle; 4 import android.util.Log; 5  6 import com.unity3d.player.UnityPlayerActivity; 7 public class MainActivity extends UnityPlayerActivity { 8     @Override 9     protected void onCreate(Bundle savedInstanceState) {10         super.onCreate(savedInstanceState);11     }12     public void test1()13     {14         Log.v("Android_Unity", "no return value and no parameter");15     }16     public String test2()17     {18         Log.v("Android_Unity","have return value and no parameter");19         return "Hello Unity";20     }21     public void test3(String par)22     {23         Log.v("Android_Unity","no return value and have parameter");24         Log.v("Android_Unity",par);25     }26     public String test4(String par)27     {28         Log.v("Android_Unity","have return value and have parameter");29         Log.v("Android_Unity",par);30         return "Hello Unity";31     }32     public static void test5()33     {34         Log.v("Android_Unity", "static function");35     }36 }

3.  打包成arr文件

打开build.gradle文件,将apply plugin: ‘com.android.application’修改为apply plugin: ‘com.android.library’,将applicationId ‘com.XXXXXX.androidunitydemo’删除。
Build.gradle

 1 apply plugin: 'com.android.library' 2 android { 3     compileSdkVersion 23 4     buildToolsVersion "23.0.3" 5     defaultConfig { 6         minSdkVersion 15 7         targetSdkVersion 23 8         versionCode 1 9         versionName "1.0"10     }11     buildTypes {12         release {13             minifyEnabled false14             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'15         }16     }17 }18 dependencies {19     compile fileTree(dir: 'libs', include: ['*.jar'])20     testCompile 'junit:junit:4.12'21     compile 'com.android.support:appcompat-v7:23.4.0'22 }

如果不用在Unity中添加Android的res文件的话,将AndroidManifest文件中使用res的部分删除。修改AndroidManifest.xml文件,加入android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">与<meta-data android:name="unityplayer.UnityActivity" android:value="true" />

AndriodManifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.xxxxxx.androidunitydemo"android:versionCode="1"android:versionName="1.0" ><uses-sdk        android:minSdkVersion="15"android:targetSdkVersion="23" /><application        android:allowBackup="true"android:label="AndroidUnityDemo"android:supportsRtl="true" ><activity android:name="com.xxxxxx.androidunitydemo.MainActivity"android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter><meta-data android:name="unityplayer.UnityActivity" android:value="true" /></activity></application></manifest>

打包文件,点击Build->Build Apk,点击Show in Explorer,打开arr文件所在文件夹,点击outputs->arr,就可以看到app-debug.arr压缩包。

4.  创建一个简单场景

创建一个Unity项目名为UnityAndroidDemo。

点击File->Build Setting,点击Android,在点击Switch platform按钮,进行平台转换,点击Player Settings,在Inspector会看到具体内容,点击Other Settings,找到Identification中的Bundle Identifier,将其内容修改成Adnroid的packageName,也就是AndroidManifext.xml文件中package的值。

点击File->Save Scene,保存场景。

5.  将AndroidManifest.xml与arr文件加入到Unity项目中

在Project里创建文件夹Plugins,在文件夹Plugins文件夹里创建文件夹Android,将app-debug.arr文件解压,将其中的classes.jar文件与AndroidManifest.xml文件取出来放入Unity的Android文件夹下。

6.  调用Android类

打开Main Camera,点击Add Component->New Script,创建一个c#文件,点击Create and Add。

打开NewBehaviourScript.cs文件,进行编写。

 1 using UnityEngine; 2 using System.Collections; 3  4 public class NewBehaviourScript : MonoBehaviour { 5     // Use this for initialization 6     void Start () { 7     } 8     // Update is called once per frame 9     void Update () {10         if (Input.GetKey(KeyCode.Escape))11             Application.Quit();12     }13     void OnGUI()14     {15         if (GUILayout.Button("NoReturnValueAndNoParameter"))16         {17             AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");18             AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");19             jo.Call("test1");20         }21         if (GUILayout.Button("HaveReturnValueAndNoParameter"))22         {23             AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");24             AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");25             string returnValue = jo.Call<string>("test2");26             Debug.Log("Have Return Value And No Parameter Return Value : " + returnValue);27         }28         if (GUILayout.Button("NoReturnValueAndHaveParameter"))29         {30             AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");31             AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");32             jo.Call("test3","Hello Android");33         }34         if (GUILayout.Button("HaveReturnValueAndHaveParameter"))35         {36             AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");37             AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");38             string returnValue = jo.Call<string>("test4","Hello Android");39             Debug.Log("Have Return Value And Have Parameter Return Value : " + returnValue);40         }41         if (GUILayout.Button("staticFunction"))42         {43             AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");44             AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");45             jo.CallStatic("test5");46         }47     }48 }

7.  运行结果显示

转载于:https://blog.51cto.com/12953214/1940451

Unity调用Android类方法相关推荐

  1. Unity调用android相册获取图片或视频

    Unity调用android相册获取图片或视频 (此文章对有unity基础和对环境配置有基础的童嚡容易看懂) 因为项目上用到,在百度了很多大佬的文章后,陆陆续续踩了很多坑,可能是我哪里设置的不对,大部 ...

  2. [原] Unity调用android版新浪微博

    本文提供unity调用微博android版 SDK 分享图片,现有sdk支持路径调用分享图片 雨凇MOMO已实现; 本文教会大家如何通过byte流分享图片(官方API pic true binary ...

  3. unity调用 Android 分享图片文字 方法 不需要第三方sdk 兼容android7.0+

    直接说方法把,在Android Studio中 新建一个工程,新建时选择Add No Activity,包名跟unity中设置的一样比如这里用 come.demo.share 在res目录下新建个文件 ...

  4. android视频分享功能吗,Unity 调用 Android 分享功能(基于ShareRec SDK视频分享)

    需求 Mob 平台是一个强大的提供分享功能的平台,为移动开发者提供 ShareSDK 社交分享.ShareREC 手游录像分享.短信验证码 SDK 及 BigApp 等免费服务. Unity 使用 S ...

  5. Unity 调用Android中的java代码

    文章目录 1. Android 程序 2. Unity程序 3. 最佳实践 Unity与Android交互有多种方式,使用AndroidJavaClass和AndroidJavaObject是最为方便 ...

  6. Unity调用Android封装的声网sdk

    文章目录 unity3调用Android 封装的声网SDK 1.环境版本 2.创建Android library 工程 3.unity3D 依赖包添加到工程libs下 4.UnityPlayerAct ...

  7. unity android 震动,unity 调用android的震动

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 在unity中调用震动一般有两种方式: 1.使用unity自带的 Handheld.Vibrate(); 优点:方便.简单 缺点:无法控制震动的频率 2. ...

  8. unity 调用android的震动

    在unity中调用震动一般有两种方式: 1.使用unity自带的 Handheld.Vibrate(); 优点:方便.简单 缺点:无法控制震动的频率 2.自己导入jar包到unity中 优点:便于后期 ...

  9. Unity 调用Android手机触屏事件

    一: 下面先说经常用的三个事件 手指按下.手指移动.手指松开 1. 手指按下if(input.touchCount==1) { if(input.touches[0].phase==TouchPhas ...

  10. unity无法调用android,Unity3D调用android方法(非插件方式)

    关于Unity3D工程与android工程的转换与合并,请参考我的另外一篇博客,如果你对Unity3D工程加入到android工程的过程不熟悉,也请先看完下面这篇博客: 下面,我们来说说本博客的终端, ...

最新文章

  1. Day7 面向对象和类的介绍
  2. 计算机视觉与深度学习 | 机器学习中的数学——入门机器学习
  3. EMD Earth Movers Distance
  4. 郎朗和机器人合奏_从世界机器人大会看新中国70年科技发展成就
  5. n皇后问题c语言报告,关于N皇后问题
  6. jenkins pipeline_Jenkins流水线(pipeline)实战之:从部署到体验
  7. python编程教学软件-Python编程教学app
  8. U-Boot在FL2440上移植(四)----支持网卡DM9000和烧写yaffs文件系统
  9. Ubuntu安装完驱动后进不去界面
  10. (转)FOF资产配置管理系统CBAAS
  11. 《Android权威编程指南(The Big Nerd Ranch Guide)(第二版)》12.4挑战练习
  12. EDIUS 9 PRO(视频编辑软件)
  13. SpringBoot MySQL #1 报错 Error executing DDL ...
  14. react兼容safari9_react项目兼容ie浏览器配置
  15. TOJ 5138: 数字游戏
  16. 手撸架构,Java基础 面试100问
  17. pandas案例之消费金额和消费之间的关联与性别和吸烟与否的关系
  18. Unity Shader入门学习(5):基础屏幕后处理
  19. 完全图与强连通图的那些坑
  20. DTU网关开发方案——芯讯通4G模组C二次开发

热门文章

  1. 【OpenCV学习笔记】【函数学习】十(常用的OpenCV函数汇总说明)
  2. sklearn——决策树基础概念
  3. ArcGIS 字段计算器保留一位小数和获取字段长度
  4. 爬虫实战(一)之爬取房天下新房数据
  5. linux系统交叉编译如何打包,构建ARM Linux交叉编译器
  6. ajax 请求与响应,实例解读ajax发送请求与数据响应
  7. gmssl java api,GmSSL-支持国密算法和标准的OpenSSL分支
  8. vue mysql交互_几种vue的数据交互形式
  9. 树莓派4烧录系统后黑屏_原创试用 | 树莓派3B+测评(二)ubuntu系统烧录+彩虹屏问题解决...
  10. android仿美丽说登录拖拽Layout