所以我们有一个 android 原生项目,主要是在 Kotlin 中。另外,我们在 Unity 中还有一个我们想要导入的小场景。
我们已经能够将 Unity 项目导出为 Android 项目,构建它,然后将 .aar 文件导入到我们的 Native 项目中。一切正常,我们甚至可以构建它并查看 Unity 场景。
在代码中,我们可以像这样持有对 Unity 的引用
protected var mUnityPlayer: UnityPlayer? = null
...
// later initialize it
mUnityPlayer = UnityPlayer(this, this)
// And call some methods
mUnityPlayer?.requestFocus()
mUnityPlayer?.windowFocusChanged(true)
但是不起作用的是调用UnitySendMessage。我们想发送一个音频文件让角色说话,但到目前为止我们无法调用该消息,一直收到无法识别该方法的错误消息。
// This line fails each time, says 'unrecognized method'
mUnityPlayer?.UnitySendMessage("modelName", "functiontoCall", "msg")
不识别可能是什么问题?是否有一些新的/不同的方式来传递消息? unity 和 Android studio 或我正在使用的 NDK 之间是否存在潜在的版本问题?
方法是
UnitySendMessage
.
示例可以在手册中找到Android插件.
using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) {
jc.CallStatic("UnitySendMessage", "GameManager", "NativeAlert", "Hello World!");
}
或
mUnityPlayer.UnitySendMessage("GameManager", "NativeAlert", "Hello World!");