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

    
    
    
    
    
    本文为七小站主原创作品,转载请注明出处:http://www.cnblogs.com/7tiny/ 且在文章页面明显位置给出原文链接。

    作者信息(详情):

    QiXiao_柒小(東)
    Software Development
    北京市海淀区 Haidian Area Beijing 100089,P.R.China
    郵箱Email : seventiny@foxmail.com  
    網址Http: http://www.7tiny.com
    QQ:1124999434 , WeChat: wd8622088 (尽量加微信)
    (专好结交天下英雄好汉,可聊天,可谈技,可约饭,可..嗯,原则是要有的~) 更多联系方式点我哦~


    Best Regard ~
  • 相关阅读:
    2019中山纪念中学夏令营-Day19 数论初步【GCD(最大公约数),素数相关】
    2019中山纪念中学夏令营-Day14 图论初步【dijkstra算法求最短路】
    2019中山纪念中学夏令营-Day12[JZOJ]
    2019中山纪念中学夏令营-Day9[JZOJ](第六次模拟赛)
    2019中山纪念中学夏令营-Day4[JZOJ]
    2019中山纪念中学夏令营-Day2[JZOJ]
    2019中山纪念中学夏令营-Day1[JZOJ]
    CCPC2019江西省赛-Problem G.Traffic
    T137223 节能主义
    T137226 彩虹海
  • 原文地址:https://www.cnblogs.com/7tiny/p/7000457.html
Copyright © 2020-2023  润新知