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

  • 相关阅读:
    码农的自我修养
    工程化编程实战callback接口学习笔记
    eval代码执行漏洞
    CTF_show WEB1通过order排序读取数据库数据(特定场景)
    Python的ico_hash计算脚本
    FOFA网页爬取最新 批量版本
    利用Python爬取fofa网页端数据
    利用Python进行Payload分离免杀
    [Gym101653Q]Number Game
    傅里叶变换
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4727228.html
Copyright © 2020-2023  润新知