标签:unity3d 解决方案 unitywebplayer
百度到的解决方案:
鼠标右键的BUG
1).3D模型基本操作都是鼠标右键按下以后,拖动鼠标可以旋转模型视角,但是WPF加载后的UnityWebPlayer控件存在一个BUG:右键菜单
2).网上有很多方法去除右键菜单的问题.但都是在网页中去除,UnityWebPlayer封装好的控件还是会携带右键菜单.经过几番周折,也没有直接
在控件里去除右键菜单的问题.在网上,所有的方法都是在网页中修改JS代码解决右键菜单的问题.但是WPF是没有办法修改JS代码的.因为我
们不需要用到Untiy3D发布后的html文件.那怎么解决这个问题呢?我的方式是截取鼠标右键的点击,抬起,按下三个事件,在截取的同时,向模型中发送鼠标消息.
public override bool PreProcessMessage(ref Message msg) {
switch (msg.Msg)
{
case 0x204://鼠标右键按下消息
case 0x205://鼠标右键抬起消息this.SendMessage("ThiredViewCamera", "RightMouseButtonDown", null);
this.SendMessage("FirstViewCamera", "RightMouseButtonDown", null);
this.SendMessage("Main Camera", "RightMouseButtonDown", null);
this.Focus();
return true;
case 0x206://鼠标右键点击消息this.SendMessage("ThiredViewCamera", "RightMouseButtonUp", null);
this.SendMessage("FirstViewCamera", "RightMouseButtonUp", null);
this.SendMessage("Main Camera", "RightMouseButtonUp", null);
return true;
return true; }
return base.PreProcessMessage(ref msg);
}
}
经试验失败,无法拦截鼠标消息。而且要修改场景,也没说明怎么修改。
通过观察消息,发现左右键单击时都有个WM_PARENTNOTIFY消息,其字符串表示中有个“WM_RBUTTONDOWN”以及“WM_LBUTTONDOWN”来区分左右键。
用Spy++ ,发现右键单击后会有个 Unity.ContextSubMenu 窗口。
思路是用Api控制使右键菜单隐藏。
API 函数 ShowWindow有点效果,但不理想,Minisize无法完全隐藏。
用MoveWindow(0, 0, 0, 0, true); 可以完全隐藏掉,但是有阴影。
为了解决这个阴影花了点时间。
/// <summary>
/// 封装U3d WebPlayer控件,屏蔽ocx中的鼠标右键显示菜单功能标签:unity3d 解决方案 unitywebplayer
原文地址:http://blog.csdn.net/llhswwha/article/details/45582707