<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
版权声明:本文为博主原创文章,转载请附上博文链接!