winform内嵌unity(一.相互传参)

环境需要
  1. unity5.3以下 可以发布webplayer版本(尝试unity2018webgl发布更改webbrowser或webview内核均失败告终,无奈使用低版本)

unity5.0下载地址:https://pan.baidu.com/s/1B3-bPMIIIHc_u9AdVjk02w
             提取码:4sj9

高版本2018 为webgl发布 据说可以实现 但实际操作时仍有问题
webbrowser  自带浏览器内核加载报错   
换成google内核页面无显示  
又换了webview的是edge内核 说是支持webgl  但是加载webgl页面加载不出来

失败链接......
【C#】首发!Win10使用C#调用Edge浏览器内核控件来展示H5或WebGL!
https://blog.csdn.net/sjt223857130/article/details/80698438
C#将WebBowser控件替换为Chrome内核
https://blog.csdn.net/ma_jiang/article/details/53812117
  1. unity对应UnityWebPlayer插件
    资源地址:https://download.csdn.net/download/qq_35257875/11444529
嵌入教程
  1. 新建一个winform项目,然后给工具箱添加UnityWebPlayer组件
    在这里插入图片描述
    在这里插入图片描述
  2. 在Winform中添加UnityWebPlayer control组件,进行基础的布局配置工作
    在这里插入图片描述
  3. 双击中间的 UnityWebPlayer control组件,进入代码编辑区域获取Unity传来的值
    (此处别忘记界面增加label框)
    在这里插入图片描述
  4. 创建一个简单的Unity控制Cube控制程序项目
    在这里插入图片描述
using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class Test_SelfRotate : MonoBehaviour
{
   public float rotateSpeed = 15.0f;
   public bool isRotate = false;
   public Text text;

   private string str;

   private void Update()
   {
       if (isRotate)
       {
           this.transform.Rotate(Vector3.up * rotateSpeed * Time.deltaTime);
       }
   }

   /// <summary>
   /// unity发送信息给Winform窗体
   /// </summary>
   public void SendMessageToWPF()
   {
       //  Application.ExternalCall("文本测试", "这是Unity发来的文本内容");
       Application.ExternalCall("swj", str);
   }

   //开始旋转物体
   public void StartRotateGameObject()
   {
       isRotate = true;
   }

   //停止旋转物体
   public void PauseRotateGameObject()
   {
       isRotate = false;
   }

   //Unity接收WPF的信息
   public void GetWPFSendMessage(float speed)
   {
       this.isRotate = true;
       this.rotateSpeed = speed;
       text.text = "接收到的旋转速度为:" + speed.ToString();
   }
}
  1. webplayer发布
    在这里插入图片描述
  2. 转到创建好的winform项目中,给窗体上的UnityWebPlayercontrol组件属性的Src指定对应的地址将发布好的.unity3d文件地址 eg: E:\unityFabu03\unityFabu03.unity3d
    在这里插入图片描述
  3. 编辑winform功能
    在这里插入图片描述
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace UnityIntoWinformTest09
{
    public partial class Form1 : Form
    {
        private string inputSpeed;//输入框的速度
        private double speed;//真实的速度

        public Form1()
        {
            InitializeComponent();
        }

        private void axUnityWebPlayer1_OnExternalCall(object sender, AxUnityWebPlayerAXLib._DUnityWebPlayerAXEvents_OnExternalCallEvent e)
        {
            label1.Text = e.value;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
        }

        private void button1_Click(object sender, EventArgs e)
        {
            axUnityWebPlayer1.SendMessage("Cube", "GetWPFSendMessage", 100);
        }

        private void label1_Click(object sender, EventArgs e)
        {
        }
    }
}

相关链接
内嵌
https://blog.csdn.net/xiaochenXIHUA/article/details/82760723
exe内嵌
https://blog.csdn.net/llhswwha/article/details/79373245
控制
https://www.cnblogs.com/nearpengju123/p/4494563.html

### 回答1: Winform Framework 是一个用于 Windows 应用程序开发的框架,而 Unity 是一个专门用于游戏开发的引擎。将 Unity 内嵌Winform 中,可以实现更丰富的交互式图形界面和更多的3D场景效果,使得开发者可以更轻松地开发出具有更高质量的富客户端程序。 在内嵌 UnityWinform 中时,需要注意以下几点: 1. Unity 版本的问题:Unity 的版本和 Winform 的版本兼容性需要分析确定,在开发时需要同时考虑两种框架的版本问题。 2. 窗口和游戏的互动:开发者需要思考如何让两个框架之间的窗口和游戏实时交互。例如如何将窗口参数传递给游戏,或游戏如何通知窗口进行修改。 3. 控件和游戏的融合:开发者需要思考如何将 Winform 中的控件融合到 Unity 游戏中。例如如何将 Winform 中的按钮与 Unity 游戏做出绑定。 总之,内嵌 UnityWinform 中可以实现更强大更丰富的应用体验和效果,但同时也需要考虑开发难度和版本兼容性等问题。开发者需要在实际开发中根据具体情况进行合理的方案设计。 ### 回答2: Winform框架是一个Windows平台的应用程序框架。它是一个强大的平台,可以用来创建Windows桌面应用程序。Unity是一个强大的游戏引擎,用于创建3D和2D游戏、模拟和其他交互式内容。 将Unity内嵌Winform框架中可以实现将Unity的游戏引擎和Winform的UI框架相结合,让游戏引擎和普通的Windows应用程序完美结合。这使得Winform框架中的应用程序可以拥有更加炫酷的交互效果,而Unity游戏引擎也可以嵌入到其他应用程序中使用。此外,这种结合还可以使Unity游戏引擎能够更好地运行在Windows操作系统上。 在实现Unity内嵌Winform框架的过程中,需要借助一些第三方控件,如“UnityWinForms”。UnityWinForms是一个开源的工具包,可以在Winform框架中嵌入Unity引擎,实现UnityWinform框架的无缝结合。此外,还需要在工程中嵌入Unity引擎的相关文件,如dll等。 总的来说,在Winform框架中实现Unity内嵌,可以将两个强大的平台结合起来,实现更加丰富和全面的应用程序。 ### 回答3: Winform Framework 是 Microsoft 提供的一种用于在 Windows 操作系统上创建本地应用程序的框架。Unity 是一种用于游戏开发的跨平台 3D 游戏引擎。将 Unity 嵌入 Winform Framework 可以使得开发者能够更方便地开发基于 Unity 的游戏应用程序。 Unity 提供了一种名为“Unity Editor”的编辑器工具,该工具可让开发者创建和编辑 3D 游戏场景、物体和其他元素。为了将 Unity 嵌入 Winform Framework,开发者需要使用一些额外的工具和技术。其中最常用的是使用 WindowsFormsHost 控件。这个控件可以将 Winform 应用程序的表单与 WPF(Winodws Presentation Foundation)应用程序混合在一起。 通过使用 WindowsFormsHost 控件,开发者可以将 Unity 编辑器内部的 3D 场景嵌入到 Winform 应用程序中的窗口中。此外,还可以使用 WindowsFormsHost 控件与 Winform 应用程序之间进行数据交换和通信。 将 Unity 嵌入到 Winform Framework 中可以为开发者提供许多便利。首先,开发者可以使用 Winform 应用程序中的其他控件,如按钮、文本框和分组框等,来控制 Unity 场景的各个方面。其次,在调试和测试应用程序时,将 Unity 嵌入到 Winform Framework 中可以使得开发者更方便地查看 Unity 应用程序的内部状态和调试信息。最后,由于 Winform 应用程序已经成为了 Windows 操作系统的一部分,所以将 Unity 嵌入到 Winform Framework 中可以使得开发者更容易将他们的游戏应用程序发布到 Windows 平台上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值