unity调用Android功能

Unity需要调用Android的功能主要涉及两种方式,一种是使用Android的插件,另一种是导出为GoogleAndroid 工程,进行处理。用途是使用第三方的插件 或者 接入渠道的SDK。

1:使用Android的插件处理。
具体过程,搜索引擎有很多结果,不再赘述。
主要要注意: 导出的jar的时候直接使用Eclipse中的export选项,选择src中的所有以及gen中的R.java即可。另外unity-classes.jar不需要再次包含。

当需要同时使用多个插件的时候:
AndroidManifest 中只能设置一个MainActivity,那么另一个插件的activity可以采用以下方式启动。

Untiy C#

AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");

AndroidJavaClass jc2 = new AndroidJavaClass("com.foo.bar.Start");
jc2.CallStatic("StartIntent",jo);

Android Java
Class Start
{
public static void StartIntent(Activity main)
{
Intent intent = new Intent(main,AnotherMain.class)
main.StartActivtiy(intent);
}
}

//另一个插件的main activity
Class AnotherMain extends Activity
{
//...

}

2:导出为GoogleAndroid Project
projectSettings 中设置为导出android工程,导出后用Eclipse打开即可。
导出后src下有3个文件。
UnityPlayerAcitivity,UnityPlayerProxyActivity,UnityPlayerNativeActivtiy
前两个类都是不再使用了,直接继承自 UnityPlayerNativeActivity,在UnityPlayerProxyActivity中直接启动UnityPlayerNativeActivity.
都是让用户直接使用UtniyPlayerNativeActivity。

我的理解是用户的类继承自其中之一才能被AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"); 所获得。
官方的文档是要求继承自UnityPlayerActivity。
但是UnityPlayerActvtiy 其实有2份,一份在unity-classes.jar中,另一份就是src中。继承任何一份都可以使用。
差别就在于如果你需要接的sdk中包含有悬浮窗之类的工具时,继承自jar包中的无法修改,继承自src中的可以将
UnityPlayerNativeActivtiy extends NativeActivity
改为
UnityPlayerNativeActivtiy extends Activity 来使得悬浮窗可以获得点击事件。

另外修改AndroidManifest MainActivity(android.intent.action.MAIN)为自己需要的activity。导出时默认为UntiyPlayerNativtiActivtiy。

发现的问题:
用Eclipse运行或者打包安装程序apk时,在unity c#代码中的
#if UNTIY_EDITOR 是成立的。也就是说。需要把android执行的相关代码直接写而不是放在宏定义中。
我就是使用了 #if UNITY_EDITOR
#else
#endif 跳了坑。 这点待更新。

其实两种方式差别不是很大,可能写插件前者方便,接sdk后者方便。unity 调用 android 如果是static方法可以直接new class 然后callStatic,否则只能继承自UntiyPlayerActivity 来做。
Android调用Untiy使用 UnityPlayer.UnitySendMessage("GameObjectName","MethodName", "args");
三个参数分别是 脚本所在的物体名,方法名,参数。 unity处理。
public void MethodName(string message)
{
//to-do
}

时间: 2024-08-04 06:23:57

unity调用Android功能的相关文章

再谈Unity调用Android的Activity

这段时间在研究Unity4.3开发环境下,如何调用由Android SDK4.4.2写的Activity.参考了很多网上的博客,百度出了几十篇大部分都是转载雨松MOMO的,这里必须向雨松MOMO表示敬意!但雨松MOMO写的博客太旧了,不少内容已经过时,我严格按他说的步骤进行,还是出了问题,所以本博客就是告诉大家在Unity4.3+Android SDK4.4.2环境,起动Activity的细节. 我这篇博客不会从零讲起,所以首先给出两个重要的链接,大家应该看一下: 第一个是雨松MOMO的  ht

Unity调用Android配置方法

方法一:发布eclipse android工程(如图勾选),如同IOS发布xcode一样,在eclipse中编写调用 方法二: 操作过程配置要点: 1.新建Android工程,注意包路径比如我的是com.zx,其他步骤直接下一步完成 2.勾选Mark this project as a library 3.新建Android工程编写相关接口方法后,复制bin文件(只需要zx.jar).res资源包.AndroidMainfest.xml配置文件 4.复制到Unity工程中Plugins/Andr

Unity调用Android的API实现分享功能&lt;转&gt;

问题:如何在unity3d的游戏中实现分享功能,如图 思路: 1.分享功能的实现方式有多种,较方便快捷的一种是直接调用android的API来调出系统的分享界面 2.unity3d里面调用android的API需要为此编写一个android的插件 3.在插件(android的jar包)里面调用Intent类来实现Activity间的消息传递,换出系统的分享控制台 代码: Android插件代码 1 package com.XXX.XXX; 2 3 import android.content.I

unity调用Android百度地图

由于个人是Android小白,在这个配置上面被折磨了很久,因此写下这篇文章 工具:eclipse + unity5.6.1 首先去百度地图开发者平台下载你需要的资源,我只需要显示地图和定位,这个时候你一定要注意了,一定要把你所需要的功能全部选择了再下载,要不然BaiduLBS_Android.jar包里面只有你选择的那个单个需求的类,下载下来之后将BaiduLBS_Android.jar类复制个副本,将后缀改成.rar格式,解压出来(后面会用到里面的assets文件夹) eclipse中配置:

Unity调用Android的Activity

之前http://shuxiayeshou.blog.51cto.com/4452347/1932216 写了关于Unity与Android结合所遇到的问题及解决方法 总结一下,Unity做一个简单的场景,AndroidStudio建一个简单的项目,其中MainActivity是要继承自 UnityPlayerActivity的,这样Unity程序可以调用Android端MainActivity的方法了 那如果Android项目中还有一个NewActivity,我们要通过Unity把他打开咋办呢

Unity调用Android类方法

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

Unity 调用android插件

1. Unity的Bundle Identifier必须和你的android报名一致 Activity和View的区别: Activity应该是一个展示页面,View是页面上一些按钮视图等等. 如何调用Android插件:  (如果你把方法主入口中的) AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); //参数不变 AndroidJavaObject jo = jc.GetStat

Unity调用Android原生的震动(简单)

要在unity中调用Android系统的震动,需要一个Vibrator类 ,通过AndroidManifest.xml文件设置权限了 如下: <uses-permission android:name="android.permission.VIBRATE" /> 在这里先给贴出英文文档及大概的翻译 : Class that operates the vibrator on the device. If your process exits, any vibration y

Unity调用android平台java代码

最近因为公司需要开始研究Unity平台的sdk接入.首先从调用最简单的java代码开始. 1.首先建立android lib项目. package unityPlugin; import com.unity3d.player.UnityPlayer; import android.widget.Toast; public class UnityPluginTest { public static void show(){ UnityPlayer.currentActivity.runOnUiTh