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.设置正确的屏蔽,并没有发现如何切换加载图标集    希望能有答案的朋友给我发短信 凑合完成的项目说。

  • 相关阅读:
    WebApi 接口参数不再困惑:传参详解
    文件 jq 传到后台
    【XML】-- C#读取XML中元素和属性的值
    【jQuery】jquery.metadata.js验证失效
    jQuery插件 -- 表单验证插件jquery.validate.js
    c#批量上传图片到服务器示例分享
    程序如何实现设置系统WIFI共享
    百度编辑器ueditor插入表格没有边框,没有颜色的解决方法
    百度UEditor粘贴或插入的表格不显示边框的解决办法
    AttributeError at /home/home/ Exception Type: AttributeError at /home/home/
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4727228.html
Copyright © 2011-2022 走看看