Unity接入AndroidSDK

Unity中已嵌入Android的SDK,Unity可以很方便的和Android实现相互调用,对于第三方的SDK,只提供了与安卓交互,因此需要通过AndroidStudio与Unity进行交互;

扩展AndriodStudio中的Activity

使用AndroidStudio创建Android Library库工程,导出到Unity中作为插件使用;库文件中可以有自己的逻辑和调用;

一,在Unity中使用Android的方法

需要使用到AndroidJavaClass类和AndroidJavaObject

AndroidJavaObject类的一常用方法:

方法 描述
Call 调用Android代码中的非静态方法
CallStatic 调用Android代码中的静态方法
Get 获取Android代码中的非静态字段
GetStatic 获得Android代码中的静态字段
Set 设置Android代码中的非静态字段
SetStatic 设置Android代码中的静态字段

二,在AndroidStudio中调用Unity的方法

使用UnityPlayer.SendMessage方法,参数描述如下:

  • A:挂在哪个物体上
  • B:哪个方法
  • C:方法的参数

三,导出文件的描述

  • jar文件:包含有自己写的逻辑的类
  • xml文件:清单文件(签名,图标,安装文件名等)
  • res文件:清单文件中需要的一些资源
  • 还有一些更高级扩展的依赖文件

注意:XML文件里会包含一些包名设置,图标等等,会和Unity中的PlayerSetting里面的设置冲突,当有xml存在时,会使用xml中的设置;

扫描二维码关注公众号,回复: 17188389 查看本文章
第一步:AndroidStudio创建工程,设置并导出aar包
  • ①:创建一个空的AndroidStudio工程

  • ②:添加Android Libary

    步骤:切换到Project视图 ⇒ 右键 ⇒ New ⇒ Module ⇒ Android Libary ⇒ 命名

  • ③:导入Unity中Android支持的.jar包(classes.jar)

    文件地址:Unity安装目录\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes\classes.jar

  • ④:导入UnityPlayerActivity.java文件到java/com.unity3d.player文件夹下

  • ⑤:添加MainActivity,继承自UnityPlayerActivity

  • ⑥:右键将classes.jar文件设置为Libary

    步骤:右键点击classes.jar文件 ⇒ Add as Libary

  • ⑦:切换到Android视图下将默认的AndroidMainfest.xml的Applaction内容复制到刚才创建的项目中的AndroidMainfest.xml中替换掉,报红就删掉

    • 修改Android:label = "AppName",会覆盖Unity中设置的程序名
    • 在***</intent-filter>的最外层添加<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
  • ⑧:导出aar包

    步骤:选中该项目 ⇒ 点击导航栏Bulid ⇒ Make Module

  • ⑨:找到Debug目录下的Build\outputs\aar.aar的压缩文件,将该文件使用压缩文件打开,删掉Libs下面的classes.jar文件删掉,将aar里面的xml文件,删掉一些通用设置,比如显示图标和App名称

  • ⑩:拷贝出项目文件\buid\intermediates\merged_manifests\debug\processDebugMainfest\Merged\AndroidMainfest.xml

第二步:将导出的aar包导入Unity中使用

一,将导出的aar包和拷贝出的AndroidMainfest复制到Unity工程的Assets\Plugins\Android文件夹下

二,获取AndroidStudio中激活的Activity

private static AndroidJavaClass unityPlayer;
private AndroidJavaObject curActivity;
private void Awake()
{
    unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    curActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
}

猜你喜欢

转载自blog.csdn.net/lel18570471704/article/details/132679570