zoukankan      html  css  js  c++  java
  • wpf集成unity

    定义一个帮助类 实际上就是为了设置以下这两种属性 安全性信任和从html中可见的属性
     即: 在html的javaScript中可用 window.external.方法名来调用C#方法
       [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
       [ComVisible(true)]
       public class ObjectForScriptingHelper
       {
           MainWindow mExternalWPF;
           public ObjectForScriptingHelper(MainWindow w)
           {
               this.mExternalWPF = w;
           }
           //自己写的方法 显示返回的文字
           public void ChangeText(string message)
           {
               this.mExternalWPF.button1.Content = message;
           }
       }
    //WPF window 窗口
      public partial class MainWindow : Window
        {
         
            public MainWindow()
            {
                InitializeComponent();
                //这里定义帮助类 參数是当前window
                ObjectForScriptingHelper helper = new ObjectForScriptingHelper(this);
               //这里定义页面脚本可调用的类对象
                webBrowser1.ObjectForScripting = helper;
            }
            private void Window_Loaded(object sender, RoutedEventArgs e)
            {//载入时候给个链接 链接到unity3d控件
                   webBrowser1.Navigate(new Uri(@"N:CommunicationsinDebugWebPlayer.html", UriKind.RelativeOrAbsolute));
            } 
        }
    -----------------------------------下面是网页内方法------------------------------------------
        <script type="text/javascript">
    //这个是给u3d控件调用的方法
            function ShowTestMessage(message) {
                window.external.ChangeText(message);
            }
    //这个是外面调用u3d控件的方法
        function ChangeMode() {
              //要传递的參数  这里假设要传递大量參数 我是用XML格式传送的 把类型转换成string 类型的 xml格式 然后u3d内部再转回来直接面向对象操作。


                var mode = 0;
               ( 依据id得到)控件.SendMessage("脚本所在物体名称 PS:能够无论物体所在层次", "要调用的方法名", mode);
                }
      </script>
    unity3d中调用外界方法就不说明了  是用Application.ExternalCall 不会的去查u3d手冊
    wpf后台调用u3d中方法 就是在wpf中调用 页面中js脚本 然后 得到u3d控件.SendMessage 即可
    最初做这个交互的初衷是想做个本地项目 可从指定路径获得新模型样板 然后通过载入数据库数据 载入场景、模型 和保存。
    之所以用webbroswer数据加载中实现互动,而不是u3d的winform activex控制 到期 对照后去实现它遇到的几个问题  1.路径来动态地设置这样做  2.设置正确的屏蔽,并没有发现如何切换加载图标集    希望能有答案的朋友给我发短信 凑合完成的项目说。

  • 相关阅读:
    使用vue-cli搭建SPA项目
    NodeJS的环境搭建+传统ELmentui+vue开发
    vue路由
    Vue基础语法(样式绑定,事件处理,表单,Vue组件)
    动态规划 | 保留重复元素的LCS 1045
    动态规划 | 1007 最大连续子序列和
    数学问题 | 质因数分解:1096
    数学问题 | 连续质因数分解:1096
    数据结构 | 哈希表二次探查法 : 1078
    数学问题 | 1015 进制转换与素数问题
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4727228.html
Copyright © 2011-2022 走看看