U3D & AS丨Unity与安卓的交互

版权声明:欢迎转载,转载请注明出处 https://blog.csdn.net/weixin_38239050/article/details/84954715

本帖为集成贴,学习各博客方法,从这些方法中完善出一条成功交互的路

Unity与Android的交互方式

首先,我们要知道Unity与Android的交互方式有:

本博客采用第一种方式进行交互,即将AS(AndroidStudio)导出的arr包和AndroidManifest放到Unity,在Unity调用arr包里的方法

交互操作步骤

链接

在该博客中,有几点需要补充,否则无法打包成功!

Q1:aapt.exe package --auto-add-overlay -v -f -m -J gen -M AndroidManifest.xml -S "res" -I

A1:如果在Unity中导入了res文件夹,则要删掉res文件夹,主意报错中的↓

AndroidManifest.xml:3: error: Error: No resource found that matches the given name (at 'icon' with value '@mipmap/ic_launcher').

若有这样的资源无法找到的提示,删掉对应的AndroidManifest.xml中这些代码

Q2:导入AndroidManifest后app闪退

A2:按照Unity报错提示,找到“stderr”和“标准输出”中提示的错误,删除jar或arr包中对应的那个文件的那一行(解压程序可打开arr包),再重新打包。

Q3:无法像博客上那样点击按钮出现想要的结果

1)、C# MyInteraction方法中“jo.Call("callUnityFunc", "U2J2U", "BeCallFunc", "yangx");”,“callUnityFunc”为arr包里的方法,后面的三个为向这个方法传入的参数。

转到Java代码,看到这个方法是这样的:

public void callUnityFunc(String _objName , String _funcStr, String _content)
   {
       UnityPlayer.UnitySendMessage(_objName, _funcStr, "Come from:" + _content);
   }

再来看一下UnityPlayer.UnitySendMessage这个方法是什么用处:

点击发送按钮后,程序将向Unity发送消息。UnityPlayer.UnitySendMessage() 参数1表示发送游戏对象的名称,参数2表示对象绑定的脚本接收该消息的方法,参数3表示本条消息发送的字符串信息

因此Unity场景中要有一个叫“U2J2U”的游戏物体、这个物体上挂载的脚本有“BeCallFunc”方法,将“yangx”传到了“BeCallFunc”方法。

再来看下C# BeCallFunc方法:

public void BeCallFunc(string _content)
    {
        setMsg(ref _content);
    }

这时我们也可以更改BeCallFunc方法,在另一个Text里显示,更好的区别于其他结果。这样就实现了该方法。

Q4:AS如何操作

A4:见下文

Add:AS的操作方法

添加Button后,程序报红

解决方法:链接

AS导出arr:

1、Build—Clean Project

2、Build—Make Module‘app’

2、在左侧“Project”的目录树app-build-outputs-arr下,即是。

猜你喜欢

转载自blog.csdn.net/weixin_38239050/article/details/84954715