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

    
    
    
    
    
  • 相关阅读:
    转:gpio_direction_output 与 gpio_set_value
    转:gpio_request
    转: 静态模式makefile中$(cobjs): $(obj)/%.o: $(src)/%.c
    转:misc_register、 register_chrdev 的区别总结
    转:aptitude 命令详解
    转:Ubuntu12.04 LTS 使用心得-开机挂载其他分区
    转:大端模式和小段模式简述
    转:C++中 #ifdef 和#endif的作用
    转:FIFO和DMA
    Camera Link 信号源板卡学习资料第153篇: 基于Sprtan6的Full(Base) Camera Link 信号源
  • 原文地址:https://www.cnblogs.com/xieyulin/p/7050618.html
Copyright © 2011-2022 走看看