所以我们有一个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之间潜在的版本问题吗
方法是< 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上的静态方法直接调用。