Unity,NGUI如何像GUI一样,点击按钮后弹出一个窗体呢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity,NGUI如何像GUI一样,点击按钮后弹出一个窗体呢相关的知识,希望对你有一定的参考价值。

需要自己做一个Panel界面,然后通过代码去显示和隐藏他,最好是在panel界面添加一个Collider,将其大小设置到足够大,这样能够屏蔽下面层的点击等事件.NGUI中自己做的窗体层,也可以实现动画的效果,最简单的就是直接使用TWEEN组件 参考技术A 可以用图片自己做一个,上面加上按钮。来自:求助得到的回答 参考技术A 我不产生水,我只是大自然的搬运工 参考技术B 这不简单

unity3d的GUI元素的界面坐标系统总结(有公式)

大家好,我是孙广东,我近期在做一个游戏,UI就是使用了系统提供的GUI。遇到非常多的问题。相信大家经常使用的就是NGUI或者2DTOOLKIT.活不多说。

Unity有四个重要的坐标系统。

能够查看例如以下文章进行了解:

 

我今天主要是要说的内容就两个:GUIText 和GUITexture

1、GUIText

锚点(Anchor)的概念我就不介绍了。像NGUI和tookit2d还有 Cocos2d中都有这个重要的概念,对于图片我们能够觉得是图片自身的原点。

而GUIText 对象本身也是支持设置锚点的,可是仅仅有9个选项。用于设置显示的Text文本的总体的自身坐标原点。

技术分享

不论什么对象都会有Transform组件,而在GUIText对象中的实用的就是Position。 这个Position代表了什么呢? 

一个重要的公式:  

整个Text文本的的总体的自身坐标原点在窗体屏幕上的位置:

pos(x,y) = (Position.x*Screen.width + PixelOffset.x,  Position.y*Screen.height + PixelOffset.y)

这个Position它代表了整个Text文本的的总体的自身坐标原点的位置的基础,Position.x是整个窗体屏幕的宽度的倍数,Position.y是整个窗体屏幕的高度的倍数。

 

注意屏幕的坐标原点是左下角为(0,0)。

                         

你最好还是能够尝试的试试这些值。观察变化。

                                                                                                                                                 

其它的属性这里不做介绍。

 

 

 

2、GUITexture

这个是没有锚点的,图片的自身原点就是在左下角为(0,0,)。

 

一个重要的公式:  

整个GUITexture图片的总体的自身坐标原点在窗体屏幕上的位置:

pos(x,y) = (Position.x*Screen.width +PixelInset.x,  Position.y*Screen.height +PixelInset.y)

这个Position它代表了整个Text文本的的总体的自身坐标原点的位置的基础,Position.x是整个窗体屏幕的宽度的倍数,Position.y是整个窗体屏幕的高度的倍数。

 

两个值的自己能够尝试着去修改。观察现象。

 

最后给大家做这个逻辑:    例如以下的一个游戏结束的效果。

技术分享

对象的逻辑是这种,GameOver是一个空对象。

BG_End 是游戏结束的大背景图

技术分享

以下是三个文本GUIText

和还有GUITexture ”本次获得积分“图片。

和一个button形状的GUITexture图片

技术分享

为了让整个的逻辑不变形。就是让前面的各个小的UI元素做游戏结束的大背景图的子对象。    我们让子对象和父对象都是相对于Transform.Position.x,y的值(要注意), 可能觉得我设置子对象的Transform.position.x.y都是 0,0,。注意子对象从父对象那继承了。对子对象一样。这样我们就这是子对象的PixelInset.x,y 调整到合适的位置。

我们记录button假图片的这个值。

如上图:我们编写代码显示真正的button时要用到。

以下编写代码来显示这个button:

 

         voidOnGUI()     //显示button //

         {

                   GUI.skin= myGUI;

                   if(GUI.Button(newRect(Screen.width*0.5f-26.3f,Screen.height*0.5f+178.71f-67f,61f,67f),"",GUI.skin.GetStyle("ContinueButton")))

                   {

                            Application.LoadLevel("mainMenu");  

                   }

         }

 

这里要注意一个基本的内容是“绘制GUI界面的坐标系以屏幕的左上角为(00)点

Button的位置公式:

(Screen.width*(子Position.x+父Position.x)+子PixelInset.x的原值,Screen.height*(子Position.y+父Position.y)+ 子PixelInset.y的绝对值值-子PixelInset.h)

大小游戏中一般就是美工提供的原图大小。

                      

 

自己好好领悟吧。

以上是关于Unity,NGUI如何像GUI一样,点击按钮后弹出一个窗体呢的主要内容,如果未能解决你的问题,请参考以下文章

JAVA GUI问题。如何触动按钮后弹出文件浏览器和文件名选择框,选择保存目录?

unity点击按钮弹出文字

Unity如何判断是否点击在gui上

Unity 4.6 - 如何将 GUI 元素缩放到适合每个分辨率的大小

unity3d、ngui插件做界面图片模糊

ngui处理不规则按钮点击