杨航最近在自学Unity3D,打算使用这个时髦、流行、强大的游戏引擎开发一个三维业务展示系统,不过发现游戏的UI和业务系统的UI还是有一定的差别,很多的用户还是比较习惯WinForm或者WPF中的UI形式,于是在网上搜了一下WinForm和Unity3D如何集成,结果不是非常令人满意,绝大多数的回答是“No Way”,也有人给出了使用WebBrowser控件的形式,说实话这种还算是比较靠谱的,以前也这么干过类似的事情;后来搜到一篇帖子说是可以使用U3D WebPlayer控件,抱着试试看的想法,新建了一个winform应用,在工具箱里面还真找到了UnityWebPlayer Control这么一个控件: 
           
          
         
         
         
          
          
         
           将它拖到form上以后,发现属性很少,大部分都是Control的属性,不过还是发现了一个很重要的属性:src,这里将发布的web包地址写进去,运行一下,奇迹出现了,竟然出现了三维场景界面。。。
          
          
          
          
           
           
          
            请忽略三维场景内容,实在是拿不出手哇
           
           
           这里留一个问题:.unity3d 文件的路径只能在设计时的属性窗口直接赋值,在Form的构造函数或者Load事件中赋值都没有效果,具体原因还没找到。
          
          这样的话算是实现了之前的需求:将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 );  再次运行,不停地点击按钮,就可以看到小球缓慢往下移动的效果了。  
          
           
            
           经过上面的尝试,总算是初步解决了U3D和Winform(WPF也类似)集成的问题,不过核心的对象控制代码还是得在U3D中写好、编译才行,winform只是提供了一个更为习惯的UI而已。不知道是否还有更好、更方便、更强大的方法,期待。。。

Unity3D 场景与C# Control进行结合相关推荐

  1. unity3d场景怎么添加天空盒子?

    unity3d场景中想要添加天空盒子,该怎么添加呢?下面我们就来看看详细的教程. 1.先下载组成天空盒子的天空图片 2.把天空图片拖进unity3d中创建的文件夹 3.新建一个材质球 4.把材质球的s ...

  2. 解析OBJ模型并将其加载到Unity3D场景中

    版权声明:本文由秦元培创作和发表,采用署名(BY)-非商业性使用(NC)-相同方式共享(SA)国际许可协议进行许可,转载请注明作者及出处,本文作者为秦元培,本文标题为解析OBJ模型并将其加载到Unit ...

  3. VRTRIX数据手套的配置以及在Unity3D场景下的多种交互实现

    VRTRIX数据手套的配置以及在Unity3D场景下的多种交互实现 准备阶段 装配 配对 连接 Tacker部分 StreamVR Unity3D部分 Package 构建场景 定义交互 交互一:点击 ...

  4. 如何在WPF中载入Unity3D场景?

    问题描述 WinForm中可以顺利载入U3D场景,但是WPF中一直报错:[未能加载文件或程序集"Interop.UnityWebPlayerAXLib-.] 原因 初步判断是因为缺少相关dl ...

  5. Unity3d场景快速烘焙

    很多刚刚接触Unity3d的童鞋花了大量的时间自学,可总是把握不好Unity3d的烘焙,刚从一个坑里爬出来,又陷入另一个新的坑,每次烘焙一个场景少则几个小时,多则几十个小时,机器总是处于假死机状态,半 ...

  6. Unity3d场景渲染出图

    制作了精美的场景,需要出图给同事使用,还在用QQ截图?那渣渣的画质,根本满足不了需求,现在好了,有了我们的ScreenshotTaker工具,帮你轻松解决这个问题. 请复制代码内容到脚本中,并置于Ed ...

  7. unity3d场景导入webgl/three.js

    比如到UnityAssetStore买了一个PolygonCity的asset资源,打开里面的Demo.scene. 用这个C#脚本可以导出xml, 脚本参考了<Unity3D研究院之将场景导出 ...

  8. [unity3d]场景烘焙

    更多教程请访问: http://dingxiaowei.cn/ Unity自带的烘培系统做个傻瓜式流程记录,以备不时之需. 1.制作要烘培的场景 一般需要模型师提供,导入Unity之后需要展UV. 选 ...

  9. Unity3D 场景切换加载进度条实现

    需要三个场景,场景A,场景B,场景C: 场景A:一个按钮,点击加载场景B: 场景B:从A切换到C过度场景,加载进度条: 场景C:目标场景: 创建OnProgress.cs脚本: using Syste ...

最新文章

  1. 什么是VMware vSphere
  2. npm run dev 后dist 被情况_npmamp;npxamp;nvmamp;yarn 介绍
  3. Trie Tree 实现中文分词器
  4. 给一维数组输入6个整数,假设为5,7,4,8,9,1
  5. Android新闻案例clientserver达到,完全自己的新闻节目平台
  6. 语言工程中有趣的事情
  7. 原始套接字抓取所有以太网数据包与分析
  8. DWR学习笔记 - Hello World
  9. java反射 set_Java反射
  10. 嵌入式硬件转职软件开发,这十点是必不可少的技能
  11. 《看见》读后感:跟柴静一起成长,追求独立与真相
  12. 转载_ANC降噪学习
  13. CRM客户管理系统的功能模块有哪些
  14. 【算法】【感悟】LCP 03. 机器人大冒险
  15. 不知何时开学,接下来计划(罗勇军的浅谈程序设计竞赛的算法知识)
  16. #Logback入门 @FDDLC
  17. java缓存击穿_对缓存击穿的一点思考
  18. 计算机组成原理 汇编语言
  19. 关于numpy.take()用法
  20. Elliptic Labs 与世界领先的笔记本电脑OEM签署首份企业软件许可合同

热门文章

  1. VC6、BC5、G2.9标准分配器一览
  2. 云服务器(Centos)部署SVN
  3. Java——集合转数组并对其进行遍历
  4. strcmp java_C语言中strcmp的实现原型
  5. php ajax json post请求参数传递,javascript - ajax post 有个请求参数要用json 但请问js怎么转json的?...
  6. 博弈论探讨及题目总结
  7. 6.824 RPC lesson2 2020(一)
  8. redis源码学习笔记目录
  9. php最新图片漏洞,2018最新PHP漏洞利用技巧
  10. 二维数组作为函数参数