winform下展示Unity3D文件可以支持对Unity3D实现的模块进行包装,以及在其他的项目中需要展示Unity3D的界面时候,恰到适宜地进行打开展示,这里我展示如何使用winform打开Unity3D文件。
一、在Unity的官网下载并安装Unity
安装完成后的目录如下:
二、在Unity/WebPlayer64/loader-x64文件夹下找到UnityWebPluginAX.ocx文件,然后将其拖动到WindowForm工具箱中。
然后将其拖动到窗体中,并添加一个button作为动态添加Src路径的按钮(UnityWebPlayerControl控件默认不支持动态切换Src,只能初始化的时候默认赋值一个才能打开,这里我们进行一下微操...)。
三、实现一个UnityHelper
using System.Windows.Forms; namespace Unity3D { public class UnityHelper { public static AxUnityWebPlayerAXLib.AxUnityWebPlayer CreateUnity(Form form,string src) { var unity = new AxUnityWebPlayerAXLib.AxUnityWebPlayer(); ((System.ComponentModel.ISupportInitialize)(unity)).BeginInit(); form.Controls.Add(unity); ((System.ComponentModel.ISupportInitialize)(unity)).EndInit(); unity.src = src; AxHost.State state = unity.OcxState; unity.Dispose(); unity = new AxUnityWebPlayerAXLib.AxUnityWebPlayer(); ((System.ComponentModel.ISupportInitialize)(unity)).BeginInit(); form.SuspendLayout(); unity.Dock = DockStyle.Fill; unity.Name = "Unity"; unity.OcxState = state; unity.TabIndex = 0; ((System.ComponentModel.ISupportInitialize)(unity)).EndInit(); form.ResumeLayout(false); return unity; } } }
然后在Form1.cs中写下简单的调用代码
using System; using System.Windows.Forms; namespace Unity3D.NETFramework461 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string src = Application.StartupPath+@"/Unity3dFiles/trans.unity3d"; var unity = UnityHelper.CreateUnity(this,src); Form form = new Form(); form.Controls.Add(unity); form.Show(); } } }
在项目bin/Debug目录下任意放一个Unity文件,这里我随便找了一个
trans.unity3d
四、最后我们运行测试一下->
点击按钮
可以看到我们的代码完美运行,并且在新窗口打开一个Unity文件。
如果想在原来的控件中显示,直接赋值给一个Src即可,如果想动态改变,那么直接动态操作控件即可...