UnityWebPlayer与Winform之间的通信底层机制是什么?
WinForms嵌入UnityWebPlayer的双向通信方案
我最近开发了一款嵌入UnityWebPlayer模块的WinForms应用,最开始想着用Socket来实现两者的通信,折腾了好一阵才发现,UnityWebPlayer本身就提供了更便捷的双向通信API,完全没必要绕远路!
从WinForm向UnityWebPlayer发送消息
直接调用UnityWebPlayer控件的SendMessage方法就能轻松实现,代码示例如下:
// 在WinForm中调用 axUnityWebPlayer1.SendMessage( "Sphere", "Down", null );
简单解释下参数:
- 第一个参数
"Sphere"是Unity场景中目标对象的名称 - 第二个参数
"Down"是该对象挂载的脚本中定义的方法名 - 第三个参数是要传递给该方法的参数,这里传
null表示无参数
从UnityWebPlayer向WinForm反向通信
如果需要Unity主动给WinForm发消息,可以通过订阅控件的OnExternalCall事件来实现,对应的事件处理方法示例:
private void axUnityWebPlayer1_OnExternalCall_1(object sender, AxUnityWebPlayerAXLib._DUnityWebPlayerAXEvents_OnExternalCallEvent e) { // 在这里处理Unity传过来的消息,e参数中包含了Unity发送的内容 }
在Unity端,只需要调用Application.ExternalCall()方法就能触发这个事件,把消息传递给WinForm。
内容的提问来源于stack exchange,提问作者choxsword
相关产品推荐
相关产品推荐

