提问者:小点点

在Android Native project中导入Unity项目后调用SendUnityMessage时出现问题


所以我们有一个android原生项目,主要是静态编程语言。另外,我们还想在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之间潜在的版本问题吗


共2个答案

匿名用户

方法是< code>UnitySendMessage。

例子可以在Android的插件手册中找到。

using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { 
    jc.CallStatic("UnitySendMessage", "GameManager", "NativeAlert", "Hello World!"); 
} 

或者

UnityPlayer.UnitySendMessage("GameManager", "NativeAlert", "Hello World!");

匿名用户

所以这是一个事情的组合:首先,我需要改变我如何导入我的包,我按照这篇文章的回答导入一个现有的JAR或AAR作为新的项目模块,不管什么原因,当我以前使用的方法看起来确实暴露了我需要的所有本机方法。

第二,正如hijinxbassist指出的,它需要作为UnityPlayer上的静态方法直接调用。