从 Android 调用 C# Unity 脚本
Posted
技术标签:
【中文标题】从 Android 调用 C# Unity 脚本【英文标题】:Calling C# Unity Script from Android 【发布时间】:2013-09-11 14:57:11 【问题描述】:我一直在尝试使用我的 android 应用程序与我的 Unity C# 脚本进行通信 "UnityPlayer.UnitySendMessage("Cube", "Test","HELLO") - 其中“Cube”是我的 Unity 对象,“Test”是它正在使用的 C# 脚本中存在的方法的名称,“HELLO”是我要传递的消息字符串。
这一行放在我的onClick函数中,像这样:
ImageButton right_button = (ImageButton) findViewById(R.id.right_arrow);
right_button.setOnClickListener(new OnClickListener()
@Override
public void onClick(View v)
// TODO Auto-generated method stub
UnityPlayer.UnitySendMessage("Cube", "Test","HELLO");
);
但是当我运行我的 android 应用程序并单击此按钮时,我会收到此错误:
09-11 14:22:37.526: E/AndroidRuntime(1330): java.lang.NoClassDefFoundError: com.unity3d.player.UnityPlayer
我的构建路径中也包含了 classes.jar。 我还有什么遗漏的吗?
提前致谢!
【问题讨论】:
找不到你的UnityPlayer类。您还期望得到什么答案。 这有帮助吗? answers.unity3d.com/questions/279581/… 我正在使用 Eclipse IDE。我设法通过将我的 classes.jar 放在 libs 文件夹中并从那里引用它来摆脱上述错误,但现在我收到此错误:09-11 19:17:36.339: E/AndroidRuntime(930): Caused by: java .lang.UnsatisfiedLinkError:未找到本机方法:com.unity3d.player.UnityPlayer.UnitySendMessage:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;) 【参考方案1】:检查 class.jar 文件是否在项目的构建路径中。如果是,请检查它是否被选中(已标记复选框)。
提示:如果您遇到 ClassDefNotFound 运行时错误(或类似错误),您可能需要执行此额外步骤:
转到 Project > Properties > Java Build Path -> Order and Export 选项卡并检查(勾选)classes.jar、Android x.y 和 Android Dependencies 项;然后应用并重建 probject。
【讨论】:
【参考方案2】:上次也发生在我身上。 我清理、重新链接并重建我的 Eclipse 项目。将我的 jar 文件重新导出到 unity 并重新启动 Unity。再次构建,错误消失了。
【讨论】:
以上是关于从 Android 调用 C# Unity 脚本的主要内容,如果未能解决你的问题,请参考以下文章
Unity3DAndroid Studio 工程中使用 Java 代码调用 Unity 的 C# 脚本 ( Java 中调用 UnityPlayer#UnitySendMessage 方法 )
Unity3DUnity 中使用 C# 调用 Java ③ ( C# 调用 Java 实例 | 进行 Android 工程打包 | Android Studio 中运行 Android 工程 )
Unity3DUnity 中使用 C# 调用 Java ③ ( C# 调用 Java 实例 | 进行 Android 工程打包 | Android Studio 中运行 Android 工程 )
Unity 中的回调侦听器 - 如何从 Android 中的 UnityPlayerActivity 调用脚本文件方法