如何将UnitySendMessage调用为接口方法

问题描述

使用适用于Unity的Android插件。

我使用UnityPlayer.UnitySendMessage(string s1,string s2,string s3)从Android到Unity进行通信,此方法将三个字符串作为参数:

  1. s1:将接收消息的GameObject名称。
  2. s2:处理消息的方法的名称。
  3. s3:消息。

因此此设置有效,在我的android插件上,我使用以下代码将消息发送到UnityClass:

UnityPlayer.UnitySendMessage("GameObjectName","OnResult",results);

在Unity中,我的名称为“ GameObjectName”的GameObject实现了以下方法:

private void OnResult(string recognizedResult);

现在麻烦了

现在,我希望这个GameObject类实现一个接口,使其强制执行“ OnResult”的处理。

但是,如果我创建以下界面:

//Interface for MonoBehaviour plugin holder
public interface IPlugin
{
    void OnResult(string recognizedResult);
}

然后在我的MonoBehaviour类上实现该接口,使其看起来像这样:

void IPlugin.OnResult(string recognizedResult)

这种方法似乎行不通。我试图用"OnResult""IPlugin.OnResult"来调用UnitySendMessage,但都无效。

我做错了什么?还是仅仅是一个限制?谢谢!

解决方法

在C#中,您可以像implement interfaces explicitely一样或隐式地https://ci.apache.org/projects/flink/flink-docs-release-1.4/api/java/org/apache/flink/streaming/connectors/kafka/FlinkKafkaProducer011.html。似乎Unity仅在隐式实现该方法时才能识别该方法。

interface IPlugin
{
    void OnResult(string recognizedResult);

}

class Working : IPlugin
{
    public void OnResult(string recognizedResult)
    {
        throw new System.NotImplementedException();
    }
}

class NoWorking : IPlugin
{
    void IPlugin.OnResult(string recognizedResult)
    {
        throw new System.NotImplementedException();
    }
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...