zoukankan      html  css  js  c++  java
  • Unity 使用Plugins接入安卓SDK 基础篇

    一.须知

    本帖适合对安卓一点基础都没有,有一定Unity基础。刚刚接完一个某文档很简单的渠道SDk,也当是自己总结一下。

    二.Unity中的目录创建与理解。

    Plugins:插件目录,该目录再编译项目的时候会优先编译,方便项目中代码调用。

    Android:规定必须这样写,规范跟Eclipse中安卓保持一致。只有这样写才会被调用到。

    bin:存放自己编写的Jar包,注意,是自己编写的Jar包。(其实也可以放到libs中目录,我测过了,不是很重要吧)

    libs:第三方编译的包放在这里,一般,

    Eclipse中这个包需要拖进去。(后面会讲Eclipse)。

    三.Eclipse中需要执行的操作及讲解。

    1.Eclipse创建工程。

    1)依次点击  File->New->Android Application Project

    2)

    A:这是项目的名字,这个自定义。

    B:这个是包名,一定要记得,需要跟Unity中  点击File->BuildSettings->PlayerSettings ->OtherSettings

     与这个名称必须要一模一样。

    (这边补充一下,Unity中还需要做这个操作)。

    C:最小的SDK版本要求,这个操作很重要,一定要选,我对sdk版本也不是很熟,具体选哪个,你就跟着我选这个吧。具体为什么我

    也不清楚,想了解的话可以参考这篇帖子。http://blog.csdn.net/zhangjg_blog/article/details/17142395

    3)

     说明:这里,我们只需要关注这4个目录,之后会慢慢解释。其他目录,我不懂,不管,我们这里,完成在Unity中接sdk。

    A:在这里写自定义的方法,也就是与Unity直接交互的地方。

    在Eclipse中写代码,写与Unity交互的地方主要也就在这里了。

    B:存放第三方Jar的包,也是需要导到Unity Libs文件夹下的Jar,但是Classes(从Unity文件夹下复制过来的jar),这个不需要导,

    因为Unity中已经存在。

    C:Eclipse 中工程资源目录,比如放一些小图标之类,一般也是需要全部烤到Unity Android目录下的。

    D:这个AndroidMainfest.xml很重要,后面讲。

     2.Eclipse 工程 中具体操作(核心)

    1).导入Unity中的一个Jar包,实现Unity中脚本与Eclipse中的脚本交互的桥梁。

    找到Unity安装包中的,

    Unity533EditorDataPlaybackEnginesAndroidPlayerVariationsmonoReleaseClasses

    把classes.jar拖入到Eclipse中 成这个样子了。

    2).点击 src->com.djw.testmydemo->MainActivity.java 

    把修改成这样,被我注释掉的代码,是系统内置的代码,可以注释掉,我们不去浪费精力了解,目的,搞定Unity与安卓的交互。

     

     图中标识,就是改动的地方,一定要把extends Activity =》改为extends UnityPlayerActivity,

    也就是因为之前导入了Unity中的classes.jar,在这里才能有import com.unity3d.player.UnityPlayerActivity,

    才可以继承UnityPlayerActivity。这里为啥需要这么做,原理我也不是很懂,我是站在Unity程序员角度接触安卓的,没有必要再深入了。

    但是需要理解:这样做,安卓才可以和Unity互相交互。

    代码中ToEclipse方法就是我们需要在Unity中调用的方法,纯测试。

    3).一些小坑,Eclipse中注意的地方。

    如果发现你的Eclipse代码报红。

    Ctrl+s,这个必须的。

    Eclipse 中 点击 Project->Clean,再勾选上Build Automatically(选中的话每次保存以后就自动编译)。

    网上解释:由于eclipse每次保存都是基于时间戳的判断机制,当build的时候,eclipse会认为时间戳没有改变的类不会被编译。

    因此需要clean一下再编译。这个时候eclipse会将所有的以前编译信息清除然后编译。

    四:导出Eclipse中的文件到Unity

    导哪些及怎么导?

    1)jar包(具体哪些jar包)

    I.

    II.

    这里,我们只导出自己编写的脚本打包成jar,注意Browse(导出地址),Finish。

    III.还需要把

    这里,只需要把android-support-v4.jar 拖到Unity的 libs目录中,zmsdk.jar,这个包是第三方,如果你们有使用,

    就把他导到Unity的 libs。但是我们这里是测试,你们是没有这个文件的,我只是演示。classes一定不要导。

    补充:导出的方式很多种,可以一次性把所有的都导过去等等吧。不止我这一种,因为对其他我也不是很理解,

    我不是专业搞安卓的,只是用到哪些跟Unity相关的,我就导出哪些。用哪些,导哪些。

    2)AndroidManifest.xml

    直接拖拽到Unity 中 Android目录下即可。

    3)res

    如果有使用到res,就拖拽到Android目录中,这里我们的Androidifest.xml有使用到res中的图标,所以,全部拖拽到Unity中。

    最终:

          

    补充:如果这里有第三方jar则导到libs中。

    五:AndroidManifest.xml 解释

    Android系统重要文件,主要涉及申请权限及定义配置文件,通过他可以实现向系统预先定义和申请应用程序运行所需要的权限。

    声明应用程序所必须具备的权限——如获取相机权限、WiFi权限等
    声明程序的入口
    指定应用程序所使用的SDK版本
    指定应用程序会使用到的库文件
    设定应用程序的硬件或一些属性——屏幕大小、是否支持旋转屏幕等

    举例1:假如你删掉  框中这句话,则Eclipse中res不用导到Unity中。

    因为删掉这句话,就没有调用res中的资源。

    举例2:如果你的项目中有需要跳转到另外一个URL,即,有跳到其他网页上。需要加权限

    ...省略...
    </application> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

    六.Unity中使用C#与Eclipse中工程通信

       AndroidJavaClass jc;
        AndroidJavaObject jo;
        public void OnTestClick() //自己设置一个按钮,点击触发
        {
            jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
            jo.Call("ToEclipse");
        }
    

    注意  ToEclipse 就是安卓中的MainActivity中的方法,至于还有一些静态方法如何互调之类,上面这个是固定用法,

    具体理解,推荐一篇文章,我这篇博客比较偏向于具体步骤,而非原理。原理这篇博客相对比较好很多。

    http://blog.csdn.net/yang8456211/article/details/51331358

    补充:这样,第一篇步骤篇,算是写完了,后面应该还会出一篇具体加入第三方jar的步骤。

    最后,感谢百度,还有一些技术博客的博主们,感谢他们的博客,知识,分享才是快乐的。

  • 相关阅读:
    HTML中一定会常用的标签和标签属性(这是网页构成的重要元素
    HTML(超文本语言)
    SQL SERVER中视图、事务
    important覆盖行内样式
    线性渐变
    「JavaScript面向对象编程指南」闭包
    移动端文章图片大小限制
    Vue中ajax返回的结果赋值
    「JavaScript面向对象编程指南」基础
    JS媒体查询
  • 原文地址:https://www.cnblogs.com/u3ddjw/p/6800542.html
Copyright © 2011-2022 走看看