简述Unity中调用Android方法
来源:互联网 发布:网络歌曲今夜不醉不归 编辑:程序博客网 时间:2024/06/07 00:27
简述Unity中调用Android方法
本人现读大二,在老师指导下做些小项目。现在正值暑假,时间较多,因项目需要,所以琢磨了下在unity环境中如何调用Android的方法。我阅读了大部分网上的关于这个问题的教程,他们都写的很好(特别是雨松MOMO)。不过因为unity版本升级过快,或是有些细节教程里没有特别说明,又或是教程重点不够突出,所以导致我花了几天的时间都没有成功,最后在不懈努力下还是成功了。我是初学unity,而且又是第一次发帖,在这里我就冒昧地综合一下大家的教程,分享一下我的经验,不好勿喷。话不多说,开始搞。
开发环境: Unity 5.3.4f1 + eclipse
开发步骤: 具体分为两大部分,第一部分在eclipse中操作,第二部分在unity中操作。
第一部分:
1.首先我们创建一个Android工程,这个很简单我相信大家都会。
2.设置包名和版本信息
3.添加classes.jar包,这个包是unity提供给Android开发用的。因为unity版本的不同,所以classes.jar已经不在某些教程说的那个路径了,我使用的是这个路径下的
C:\ProgramFiles\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Developmen\Classes
找到classes.jar然后放入安卓工程对应的库中
4.添加关系
5.然后我们就可以编辑MainActivity里面的内容了
6.因为我们要调用SecondActivity,所以我们先去创建SecondActivity,然后回来写自定义方法。
7.编辑SecondActivity
8.准备工作做好了,我们可以编辑MianActivity了
import android.content.Intent;import android.os.Bundle;import android.os.Vibrator;import com.unity3d.player.UnityPlayerActivity;public class MainActivity extends UnityPlayerActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.activity_main); } public void SetVibrator() { Vibrator mVibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); mVibrator.vibrate(new long[] { 200, 2000, 2000, 200, 200, 200 }, -1); //实现震动的方法 } public void intentSecoendActivity() { Intent intent = new Intent(this, SecondActivity.class); startActivity(intent); //实现调用第二个Activity的方法 }}
9.配置一下manifest
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.demo" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SecondActivity" ></activity> </application> <uses-permission android:name="android.permission.VIBRATE"></uses-permission></manifest>
10.然后我们打开eclipse 项目栏 project,去勾选 build automatically,然后 clean,build project。
11.打包class文件,先找到class文件路径,我的在 E:\Android\eclipse\demo\bin\classes (自己项目的工作空间->bin->classes), 然后win + R ,cmd进入命令提示符,切换到你的classes目录下
执行打包命令 jar -cvf class.jar * ,打包完成目录如下。
到此第一部分结束。
第二部分:
1.创建一个unity工程并创建如下目录 Assets->Plugins->Android->bin 将刚才打包好的class.jar文件放入bin文件夹。在eclipse工程里拖动 assets、res、androidManifest 到unity Android文件夹内。如下
2.编写一个js001的脚本,并绑定到主摄像机
using UnityEngine;using System.Collections;public class js001 : MonoBehaviour { void Update () { //当用户按下手机的返回键或home键退出游戏 if (Input.GetKeyDown(KeyCode.Escape) || Input.GetKeyDown(KeyCode.Home) ) { Application.Quit(); } } void OnGUI() { if (GUILayout.Button ("zhen_dong", GUILayout.Height (100))) { if (Application.platform == RuntimePlatform.Android) { AndroidJavaClass jc = new AndroidJavaClass ("com.unity3d.player.UnityPlayer"); AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject> ("currentActivity"); jo.Call ("SetVibrator"); } } if (GUILayout.Button ("OPEN Activity", GUILayout.Height (100))) { if (Application.platform == RuntimePlatform.Android) { AndroidJavaClass jc = new AndroidJavaClass ("com.unity3d.player.UnityPlayer"); AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject> ("currentActivity"); jo.Call ("intentSecoendActivity"); } } }}
3.按 ctrl + s 保存当前的场景命名为Scene
4.打开file->build settings -> player settings 修改下图表格,根据自己的项目来。
5.build 项目,得到apk文件后,由夜神模拟器测试如图。无法测试震动,震动只能在真机上测试。
第二部分到此结束。
总结:
unity调用android方法主要是通过将classes.jar导入安卓工程,让MainActivity继承UnityPlayerActivity,注释掉setcontentview方法,因为系统启动第一个activity,会通过scene渲染,不使用setcontentview。然后在MainActivity里编写自定义方法,然后打包到unity。unity在使用特殊方法调用。
本文图片中用红色标注的都是重点,如果不注意可以会造成 打包apk 不成功,apk安装后闪退的问题。
源码网盘地址如下:
http://pan.baidu.com/s/1c1D87JU ku84
若有什么不对的地方,请大家指出,大家一起学习一起进步。
- 简述Unity中调用Android方法
- Unity中调用Android原生方法
- unity调用Android中定义的方法
- Unity 调用Android方法
- unity 调用android方法
- Unity调用Android方法
- unity简单调用Android方法
- 极简Unity调用Android方法
- Android中JNI调用过程简述
- 在Unity中调用Android
- 简述Android中Activity的启动(onCreate方法的调用)
- Unity调用android的方法,android调用Unity的方法,unity和安卓的交互
- unity 调用android 常用方法封装
- Unity调用Android的Java方法
- Unity 在JS中间隔时间调用方法
- Unity中使用 slua --- 调用c#方法
- iOS中OC调用js方法简述(一)
- Unity与Android交互之Unity调用java方法
- C++11中一些新语言特性与相似特性的比较
- Java Web基础——Action+Service +Dao三层的功能划分
- MySQL数据库备份、导入导出
- POJ 1236 Network of Schools 强联通分量求出度为0的点和入度为0的点的数目
- 图解HTTP---学习笔记1
- 简述Unity中调用Android方法
- ARM v7汇编与相关练习
- php 去除字符串末尾字符
- ruby的redo和retry 回顾
- NYOJ-51-管闲事的小明(离线处理)
- Spring - 依赖注入和控制反转
- zynq启动过程
- android中的反射机制
- SAP MD04详解