跳转到主要内容

Unity3d和Android的互相调用(一)

joycha 提交于

<font style="line-height: 40px;"><strong>摘要</strong></font>

游戏开发中进行会用到和原生组件进行相互调用,比如说;游戏中需要支付,那么就会通过Unity3D调取Android接口的方法。那么我们来看一下如何进行这个调用效果的。

<font style="line-height: 40px;"><strong>原理</strong></font>

unity3d实现了这样的结构,那么这样的结构是什么呢,让我们把他归一归类讲解。

<font style="line-height: 40px;"><strong>Unity调用Android的方法</strong></font>

<font style="line-height: 40px;" color="#aa8812">1. 没有返回值的普通方法 </font>

C#中调用方式call(String moduleName)

<pre>AndroidJavaObject jo = new AndroidJavaObject("android.content.res.Configuration");
jo.Call("setToDefaults");</pre>

在java中的方法格式为

<pre>public void setToDefaults(){
//你的方法逻辑
}</pre>

<font style="line-height: 40px;" color="#aa8812">2. 带有返回值的普通方法</font>

<pre>AndroidJavaObject jo = new AndroidJavaObject("java.lang.String", "some string");
int hash = jo.Call<int>("hashCode");</pre>

在java中的方法格式为

<pre>public int hashCode(){
//你的方法逻辑
}</pre>

<font style="line-height: 40px;" color="#aa8812">3. 没有返回值的静态方法</font>

<pre>AndroidJavaObject jo = new AndroidJavaObject("android.os.Binder");
jo.CallStatic("flushPendingCommands");</pre>

在java中的方法格式为

<pre>public static void flushPendingCommands(){
//你的方法逻辑
}</pre>

<font style="line-height: 40px;" color="#aa8812">4. 带有返回值的静态方法</font>

<pre>AndroidJavaObject jo = new AndroidJavaObject("java.lang.String");
string valueString = jo.CallStatic<string>("valueOf", 42.0);</pre>

在java中的方法格式为

<pre>public static string valueOf(){
//你的方法逻辑
}</pre>

<font style="line-height: 40px;"><strong>Android调用unity3d的方法</strong></font>

只需要在你导入了游戏打包后的数据后,就可以通过如下代码段,来进行Android调用unity3d的方法了。

<pre>UnityPlayer.UnitySendMessage("unitychan", "next", "");</pre>

UnitySendMessage中第一个参数为Unity3d中模型的名字,第二个参数为C#脚本中的方法名,第三个为方法的参数。

注意:使用这个方法前,请确认你的Unity3d中该unitychan对象身上挂着的脚本中有这个方法。

例如:
<pre> void next()
{
anim.SetBool("Next", true);
}</pre>

来源:CSDN,作者:喜欢雨天的我
原文:https://blog.csdn.net/qq_15807167/article/details/53573656
版权声明:本文为博主原创文章,转载请附上博文链接!