加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

【精华】Unity3d嵌入到WinForm

(2016-04-07 10:12:25)
分类: 三维
一、Unity嵌入到WinForm
1、Unity发布成WebPlayer
2、WinForm中查找控件
添加后,工具箱会发现控件:
控件src属性赋值:F:\Web Publish\Desktop.unity3d
运行程序,即可看见效果。

将U3D和Winform结合,不过winform的控件如何和U3D进行交互呢?再看一下UnityWebPlayerClass类的定义,发现有一个SendMessage方法,和U3D自身脚本的SendMessage定义一样。

 下面首先在U3D中创建一个C#脚本,添加一个非常简单的函数:



void Down()
{
    transform.Translate( Vector3.down * Time.deltaTime );
 }

 将脚本拖到叫做Sphere的对象上面。然后在窗体上添加一个按钮,在按钮的click事件中调用上面定义的方法:



axUnityWebPlayer1.SendMessage( "Sphere", "Down", null );
【好东西啊!】http://neil.wyh.blog.163.com/blog/static/3161151201361480843/

二、unity发布成exe,然后再Winform中调用exe
http://pcajax.iteye.com/blog/1540096
System.Diagnostics.Process.Start(@"D:\Program Files\xxxx.exe");


三、动态加载
http://blog.csdn.net/qw_zr/article/details/41808895
在winform中如何嵌入unityed,请参考此帖 http://neil.wyh.blog.163.com/blog/static/3161151201361480843/但是该文中,并没有告诉如何动态设置src。这个src必须是绝对路径,而且只能在设计器进行设置,不能在代码中动态修改。这样造成的问题就是,unity3d文件必须是写死的,如果换一个路径就无效了,这样极不利于分布到其他电脑上。当然,如果这个src是http形式的,则不存在这个问题,如果是本地路径(比如c:\u.unity3d)则是个大问题。以下是解决方法,在4.5.5版本测试成功。
  1. private void InitUnity()  
  2.  
  3.     var unity new AxUnityWebPlayerAXLib.AxUnityWebPlayer();  
  4.     ((System.ComponentModel.ISupportInitialize)(unity)).BeginInit();  
  5.     Controls.Add(unity);  
  6.     ((System.ComponentModel.ISupportInitialize)(unity)).EndInit();  
  7.     unity.src Application.StartupPath "\\u.unity3d" //改成自己想要的路径  
  8.     AxHost.State state unity.OcxState;  
  9.     unity.Dispose();  
  10.     unity new AxUnityWebPlayerAXLib.AxUnityWebPlayer();  
  11.     ((System.ComponentModel.ISupportInitialize)(unity)).BeginInit();  
  12.     this.SuspendLayout();  
  13.     unity.Dock DockStyle.Fill;  
  14.     unity.Name "Unity" 
  15.     unity.OcxState state;  
  16.     unity.TabIndex 0;  
  17.     panel1.Controls.Add(unity); //panel1是我用的一个容器,改成this.Controls也可以  
  18.     ((System.ComponentModel.ISupportInitialize)(unity)).EndInit();  
  19.     this.ResumeLayout(false);  
  20. }  

四、WPF嵌入unity3d
http://jingyan.baidu.com/article/25648fc1a331ce9191fd0004.html



0

阅读 收藏 喜欢 打印举报/Report
后一篇:Unity3D 单位
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有