winform展示Unity3D文件(支持动态改变文件路径)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winform展示Unity3D文件(支持动态改变文件路径)相关的知识,希望对你有一定的参考价值。

 

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即可,如果想动态改变,那么直接动态操作控件即可...

 



 

以上是关于winform展示Unity3D文件(支持动态改变文件路径)的主要内容,如果未能解决你的问题,请参考以下文章

C# WinForm程序中使用Unity3D控件 (转)

在winform画了一个自定义控件,现在我要在运行后进行拉伸动态改变大小,但快速拉伸就闪烁,怎么消除

unity3d里菜鸟在线怎么给动态添加的物体添加贴图?

winform 动态改变listview字体颜色

Unity3D 在代码中动态改变GameObject大小和锚点

Unity3D 序列化与动态加载