栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

Unity中C#和Java的相互调用实例代码

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Unity中C#和Java的相互调用实例代码

1、通过C#调用Java的方法:

在C#中添加调用的一些代码,利用Unity提供的一些接口实现调用Java!

private const string JAVA_CLASS_Name = "com.unity3d.player.UnityPlayer";
    private void CallJavaFunc(string javaFuncName, params object[] args)
    {
      try
      {
 //获取到AndroidJavaClass,至于这里为什么调用这个类,我也不是很清楚
 using (AndroidJavaClass jc = new AndroidJavaClass(JAVA_CLASS_Name))
 {
   //获取到Activity
   using (AndroidJavaObject jo = jc.GetStatic("currentActivity"))
   {
     //调用Java方法
     jo.Call(javaFuncName, args);
   }
 }
      }
      catch (System.Exception ex)
      {
 Debug.Log("callSdk error:" + ex.Message);
      }
    }
    //C#里就可以通过这个方法调用Java里的方法了
    public void Test1()
    {
      int num = 1;
      CallJavaFunc("JavaFuncName", num);
    }

在java中主要是添加被调用的方法,方法名就是上边的字符串参数(JavaFuncName),参数需要一一对应!

public class MainActivity extends UnityPlayerActivity 
{
 public void JavaFuncName(final int num)
 {
 Log.i("C#调用了JavaFuncName,参数num:",String.valueOf(num));
 }
}

我是使用eclipse创建的android工程,java中的activity需要继承UnityPlayerActivity,继承这个activity需要在你的android中填 加classes.jar包,这个包在:

你Unity的安 装路径EditorDataPlaybackEnginesAndroidPlayerVariationsmonoRelease C lasses下,

这样就可以调用Java的方法了!

2、通过Java调用C#的方法:

在Java中添加调用的一些代码,Java调用C#主要是通过Unity封装的classes.jar包里面的UnitySendMessage方

法传递 参数实现,因为该方法只能将一个参数传递给C#的方法,所以传递多个参数的时候可以使用json。

//调用
 public void Test2()
 {
 JSonObject pms=new JSonObject();
 try {
  //参数只能参一个,所以包装成json对象
  pms.putOpt("FuncName","Test2");
  pms.putOpt("num",1);
 } catch (JSonException e) {
  e.printStackTrace();
 }
 //利用Unity提供的发送消息接口给Unity传递参数,
 //GameObject是Unity中物体的名称,
 //CSharpFunc是C#中方法的名称,
 //需要将带有CSharpFunc这个方法的C#脚本挂在GameObject这个物体上
 UnityPlayer.UnitySendMessage("GameObject","CSharpFunc",pms.toString());
 }

  在C#中 添加被调用的方法,如果传递过来的是多个参数,需要将参数一一解析出来使用 。

//被调用
  public void CSharpFunc(string data)
  {
    JsonData json = JsonMapper.ToObject(data);
    string num = (string)json["num"];
    string name = (string)json["FuncName"];
    Debug.Log(string.Format("被Java方法调用了,Java方法名字是:{0},参数是{1}",name,num));
  }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/123008.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号