接入Android SDK流程分为以下四步:

  1. 写Android Activity文件 与 unity的调用java接口(AndroidJavaClass/AndroidJavaObject)
  2. Android java代码写完后,打包成JAR包
  3. copy Android工程到Unity
  4. Android回调Unity(UnityPlayer.UnitySendMessage)

一、写Android Activity文件 与 unity的调用java接口

Android Activity文件有两种方式:

1. 继承 UnityPlayerActivity

Android java代码
public class MainActivity extends UnityPlayerActivity 
unity的调用
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");AndroidJavaObject jo = jc.GetStatic("currentActivity");jo.Call("WeChatlogin");

AndroidJavaObject对应Java的基类Object,通过这个类,可以在Unity中直接通过类名构造Android中的Java类,一般我们使用该类进行Android代码调用
AndroidJavaClass继承于AndroidJavaObject,与其之间的关系等价于Java中Object与Class的关系,一个是类的实例,一个是类的类型

2. 使用Unity本身正在使用的当前Activity

Android java代码

小米的sdk不要求我们创建独立的Activity,所以我们直接使用Unity本身正在使用的当前Activity,只是请注意,一定要使用runOnUiThread来调用,否则可能会出现调用不到的情况。

public class XiaoMiSdkMgr{            public static void MiInit(final String appID,final String appKey)    {        UnityPlayer.currentActivity.runOnUiThread(                new Runnable()                {                    @Override                    public void run()                    {                        MiAppInfo appInfo = new MiAppInfo();                        appInfo.setAppId(appID);                        appInfo.setAppKey(appKey);                        appInfo.setAppType(MiAppType.online);                        MiCommplatform.Init( UnityPlayer.currentActivity, appInfo );                    }                });            }}
unity的调用
using (AndroidJavaClass jc = new AndroidJavaClass("com.the7th.heaven.XiaoMiSdkMgr");)    {        jc.CallStatic("miLogin");    }

二、Android java代码写完后,打包成JAR包

方式1:

下面我们学习如何在Unity中去调用它。首先Build一下当前的Eclipse工程,代码所有的.class文件都生成在了Android工程的bin文件夹中,当前工程的路径是UnityTestActivity->bin->classes->com->xys->你的.class文件。下面需要对这些.class文件进行打包,苹果系统的话打开电脑的终端,cd到classes文件夹的目录下,接着执行代码

jar -cvf class.jar *

这行代码的意思是把当前目录下的所有.class文件打包成.jar文件,保存文件名称为class.jar

在上诉步骤中有一点尤为重要,==就是当你在生成jar包之前请一定要确认你要生成的路径下有没有R开头的class文件==

例如这些R文件,这些R开头的文件可能会导致你Unity发安卓包失败,因为在Unity本身自带的classer.jar包里面是有R文件的,它会和你的这些R文件冲突。

方式2:

http://jingyan.baidu.com/article/ea24bc3984f5b2da62b33186.html

  1. 右键工程--->Export
  2. 点击Java--->JAR file---->Nex
  3. 勾选src包即可,其他项不选
  4. 点击finishi即可

三、copy Android工程到unity

  1. 将Android工程中的res、asset copy到Assets\Plugins\Android
  2. 将JAR包和对应SDK的jar copy到Assets\Plugins\Android\bin
  3. 设置AndroidManifest.xml

四:Android回调unity

UnityPlayer.UnitySendMessage("ThirdLoginGameobject","WeChatloginCallBack",o.toString());  

第一个参数是Game Object对象,所以需要在游戏对象上绑定脚本。
第二个参数是unity中定义的方法名。
第三个参数是定义方法的参数(可空)。

参考链接

  1. http://www.xuanyusong.com/archives/3395
  2. http://blog.csdn.net/qq_33639362/article/details/51889827
  3. http://blog.csdn.net/yangxuan00/article/details/53391319
  4. http://www.xuanyusong.com/archives/676

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. 一款常用的 Squid 日志分析工具
  3. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  4. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  5. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  6. [android]使用线控耳机来操控应用功能
  7. android 从相机或者相册获取照片!
  8. Android平台上利用opencv进行图像的边沿检测
  9. android中使用BitmapFactory的decodeStream()方法解码图片失败问

随机推荐

  1. Android中文API(122) ―― AudioRecord
  2. targetSdkVersion导致的Android运行时权
  3. android 画虚线不显示解决方案
  4. Android用户界面(三):线性布局…
  5. Optionsmenu的创建
  6. Android webView 获取、设置 cookie的方
  7. Android压缩文件成.zip及解压缩.zip文件
  8. Android常用控件的使用方法
  9. android studio R文件找不到
  10. Android 系统资源(字体,声音,视频)的简介