winForm窗体嵌入U3d

时间:2022-04-07 01:42:49

最近新做一项目,需要winForm框架嵌入u3d,并且实现交互。从网上搜了各种资料,总结了三种方法:

1、直接打开exe程序

System.Diagnostics.Process.Start(@"D:\Demo\Demo1020.exe");

缺点:u3d不嵌入到窗体 而是单独的打开。

优点:算是优点吧,画面还是比较流畅的

2、用网上封装好的方法嵌入窗体

可以看这里的实现 代码就不自己贴了 嫌麻烦 

缺点:a画面很不流畅,可以说会出现卡死的情况,如果u3d有自动动画效果,嵌入之后完全看不到。

    感觉这是封装的方法的问题,但是本人太菜 不会改。。。

   b无法自适应外部窗体的大小 感觉应该也是可以改 哈哈 期待大牛

优点:嵌入到窗体了,初步效果算是实现了

以上两种交互 网上有一种说用串口通信、有一种用管道(管道不熟悉所以放弃了) 此处我采用的是socket通信。感觉有些大材小用了,但是却又实在不知道怎么通信好,所以用的socket。winForm作为服务器端,,u3d作为客户端

3、使用UnityWebPlayer控件

这也是搜索时最常见的一种了

这个帖子写的还算挺好的,对于后期的交互。这个是我弄完之后搜到的,感觉还不错

缺点:可能就算是要安装插件了吧

优点:比较好的嵌入,毕竟是自家的控件了嘛,所以嵌入的效果还是不错。u3d随窗体最大化改变大小问题 解决~画面不流畅问题 解决~ 嵌入问题 解决~ 

  Ok,剩下的就是通信了,通信 unityWebPlayer 有个Application.ExternalCall方法 ,winForm这边也有相同的发送方法 _axUnityWebPlayer.SendMessage 接收时调用_axUnityWebPlayer_OnExternalCall事件就可以了。

winForm窗体嵌入U3d