WinForm内嵌Unity3D

Unity3D可以C#脚本进行开,使用vstu2013.msi插件,可以实现在VS2013中的调试。在开发完成后,由于项目需要,需要将Unity3D嵌入到WinForm中。WinForm中的UnityWebPlayer Control可以载入Unity3D。先看效果图。


一、为了能够动态设置axUnityWebPlayer的Src,我使用用户控件来封装。看下面的代码。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.InteropServices;
using System.Threading;

namespace UnityHost
{
    public partial class U3DPlayer : UserControl, IMessageFilter
    {
        #region 属性
        private String _src;
        /// <summary>
        /// Unity3D文件的路径
        /// </summary>
        public String Src
        {
            get { return _src; }
            private set { _src = value; }
        }

        private bool _disableMouseRight = true;
        /// <summary>
        /// 禁用鼠标右键
        /// </summary>
        public bool DisableMouseRight
        {
            get { return _disableMouseRight; }
            set { _disableMouseRight = value; }
        }

        #endregion

        #region 自定义事件
        //委托
        public delegate void ExternalCallHandler(object sender, AxUnityWebPlayerAXLib._DUnityWebPlayerAXEvents_OnExternalCallEvent e);
        /// <summary>
        /// 接收Unity调用宿主函数的消息
        /// </summary>
        [Browsable(true), Description("接收Unity调用宿主(如WinForm)函数的消息")]
        public event ExternalCallHandler UnityCall;
        //方法
        public void OnUnityCall(object sender, AxUnityWebPlayerAXLib._DUnityWebPlayerAXEvents_OnExternalCallEvent e)
        {
            if (UnityCall != null)
            {
                UnityCall(sender, e);
            }
        }
        #endregion

        #region 内部变量
        private AxUnityWebPlayerAXLib.AxUnityWebPlayer _axUnityWebPlayer=null;
        private ProgressBar _progressBarLoad=null;
        #endregion

        public U3DPlayer()
        {
            InitializeComponent();
            InitProgressBar();
        }

        private void InitProgressBar()
        
  • 1
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
Winform是一种用于创建Windows桌面应用程序的编程框架,而Unity3D则是一个用于开发游戏和可视化应用的跨平台引擎。WinformUnity3D可以进行集成,通过在Winform应用程序中调用Unity3D引擎来实现丰富的游戏和交互体验。 要在Winform中调用Unity3D,首先需要在Winform应用程序中添加Unity3D的视图控件。可以通过在Winform设计界面上添加一个Panel,然后将其转换成Unity3D视图控件,来实现此功能。在转换为Unity3D视图控件后,可以通过调用Unity3D的API来实现对场景、游戏对象及其组件的控制。 在调用Unity3D之前,需要确保已将Unity3D引擎集成到Winform应用程序的项目中,并将其与Unity3D开发环境进行链接。这样,Unity3D的相关功能才能在Winform应用程序中正常工作。 调用Unity3D时,可以利用Unity3D的API来加载场景、创建游戏对象、控制游戏流程,以及与用户进行交互。同时,还可以将Unity3D的渲染结果呈现到Winform应用程序的视图控件上,实现与Unity3D引擎的集成显示。 在将Unity3DWinform集成后,可以通过在Winform应用程序中添加按钮、菜单或其他控件来触发Unity3D的功能。比如,在Winform应用程序中添加一个按钮,点击该按钮时,调用Unity3D的方法来加载一个新的场景或改变游戏对象的属性等。这样,就能够通过Winform应用程序中的用户交互来控制Unity3D引擎的行为。 总之,通过在Winform应用程序中调用Unity3D,可以实现丰富多样的游戏和交互体验,增强应用程序的功能和吸引力。同时,这种集成也可以为开发者提供更多的灵活性和创造力,使他们能够更好地应对各种应用场景的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值