简述Unity中调用Android方法
2016-07-23 16:21
711 查看
简述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安装后闪退的问题。
源码网盘地址如下:
链接: https://pan.baidu.com/s/1hszLRKg 密码: 9z8w
若有什么不对的地方,请大家指出,大家一起学习一起进步。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories