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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值