有时候我们需要在程序中弹出一个模态对话框来告诉用户一些信息,这时候使用
“EditorUtility.DisplayDialog” 就足够满足要求了,但是当我们需要更加复杂一点的模态对话框的时候,那就得自己来写了。
下面是一个很简单的解决方案(肯定不是最好的但是可以达到需要的效果)
1.创建一个ModalWindow.cs (稍后当作组件来使用)
1
|
gameObject
.
AddComponent
(
"ModalWindow"
)
;
|
2.创建一个box用作模态对话框的窗体
3.创建一个透明度按钮,大小等于你希望无效区域的大小(如果你希望对话框后的所有区域都无效的话把它设成屏幕大小就可以了)
4.阻断一切点击消息
1
2 3 4 |
if
(GUI
.
Button
(disableRect,
"", skin
.
customStyles
[
1
]
)
)
{ Event . current . Use ( ) ; } |
5.把这个对话框显示在最顶层
1
|
GUI
.
depth
=
0
;
|
PS:
很简单的实现方法但是还有一个小问题,对话框后的按钮确实无法被点击但是在鼠标滑过时仍然改变成“hover”的状态……
如果你知道解决方法的话请告诉我一下^_^
cocos2d.com/zh/2011/09/01/simple-modal-window-solution-in-unity3d/