如何解决如何将UnitySendMessage调用为接口方法
使用适用于Unity的Android插件。
我使用UnityPlayer.UnitySendMessage(string s1,string s2,string s3)从Android到Unity进行通信,此方法将三个字符串作为参数:
- s1:将接收消息的GameObject名称。
- s2:处理消息的方法的名称。
- 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();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。