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 ”本次获得积分“图片。

和一个按钮形状的GUITexture图片

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

我们记录按钮假图片的这个值。如上图:我们编写代码显示真正的按钮时要用到。

下面编写代码来显示这个按钮:

voidOnGUI()     //显示按钮 //

{

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界面的坐标系以屏幕的左上角为(0,0)点

Button的位置公式:

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

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

 
 

unity3d的GUI元素的界面坐标系统总结(有公式)的更多相关文章

  1. 黑马程序员:Java基础总结----GUI图形化界面

    黑马程序员:Java基础总结 GUI图形化界面   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流!   GUI(Graphical User Interface)图形化界 ...

  2. Unity3D笔记 GUI 一

    要实现的功能: 1.个性化Windows界面 2.减少个性化的背景图片尺寸 3.个性化样式ExitButton和TabButton 4.实现三个选项卡窗口 一.个性化Windows界面 1.1.创建一 ...

  3. [原]Unity3D深入浅出 - GUI控件

    Unity的GUI类提供了丰富的界面控件,通过组合这些控件,完成和用户交互的界面. Lable:绘制文本和图片 Box:绘制一个图形框 Button:绘制一个响应单击事件的按钮 RepeatButto ...

  4. python3.6 +tkinter GUI编程 实现界面化的文本处理工具

    更新: 2017.07.17 补充滚动条.win批处理拉起py 2017.08.13 新增自定义图标 --------原创      blogs:    http://www.cnblogs.com/ ...

  5. Unity3D笔记 GUI 三、实现选项卡二窗口

    实现目标: 1.使用个性化Box控件 2.个性化Lable控件 3.添加纵向滚动条 4.新建SelectedItem样式 一.最终效果: 二.主要代码 using UnityEngine; using ...

  6. Unity3D笔记 GUI 二 、实现选项卡一窗口

    实现目标: 1.个性化Box控件 2.新建TextAmount样式 3.新建TextItem样式 一.个性化Windows界面 设置GUI Skin 1.2 部分代码 Rect stateBox = ...

  7. tkinter的GUI设计:界面与逻辑分离(一)-- 初次见面

    PyQt实现界面与逻辑分离的设计很是方便,详情可以见我的第一篇博文. 不过本文将使用python的标准库 tkinter,来实现界面与逻辑分离的GUI 设计. 我们来设计一个很简单的程序: 目的:长度 ...

  8. python gui之tkinter界面设计pythonic设计

    ui的设计,控件id的记录是一件比较繁琐的事情. 此外,赋值和读取数据也比较繁琐,非常不pythonic. 有没有神马办法优雅一点呢?life is short. 鉴于控件有name属性,通过dir( ...

  9. unity3d NGUI多场景共用界面制作

    1创建单独编辑UI的unity场景 UIScene.unity 用来做UI面界 ,创建Resources文件存放UI界面的prefab,代码里动态load资源仅仅能从Resources目录载入 2创建 ...

随机推荐

  1. 转】C#接口-显式接口和隐式接口的实现

    [转]C#接口-显式接口和隐式接口的实现 C#中对于接口的实现方式有隐式接口和显式接口两种: 类和接口都能调用到,事实上这就是“隐式接口实现”. 那么“显示接口实现”是神马模样呢? interface ...

  2. 2014 Multi-University Training Contest 9#6

    2014 Multi-University Training Contest 9#6 Fast Matrix CalculationTime Limit: 2000/1000 MS (Java/Oth ...

  3. 微信服务号模板消息接口新增"设置行业"和"添加模板"及细节优化

    微信服务号模板消息可以向用户发送重要的服务通知,如信用卡刷卡通知,商品购买成功通知等.昨日,微信团队发布公告称模板消息新增“设置行业”和“添加模板”接口及细节优化,详细变动如下 模板消息[业务通知]自 ...

  4. js制作烟花效果

    <html> <head> <link type="text/css" rel="stylesheet" href="c ...

  5. 06OC之内存管理

    在高级语言中,例如C#是通过垃圾回收机制(GC)来解决这个问题,但是在OC并没有类似的垃圾回收机制,因此必须由程序员手动去维护.今天就讲讲OC中的内存管理: 一.内存管理原理 在Xcode4.2之后的 ...

  6. BZOJ 4582: [Usaco2016 Open]Diamond Collector

    Descrirption 给你一个长度为 \(n\) 的序列,求将它分成两个序列后最多个数,每个序列最大值最小值不能超过 \(k\) Sol 二分+DP. 排一下序,找出以这个点结尾和开始的位置. 这 ...

  7. JSON.stringify()和JSON.parse()

    parse用于从一个字符串中解析出json对象,如 var str = '{"name":"huangxiaojian","age":&qu ...

  8. Linq查询表达式

    目录 1. 概述 2. from子句 3. where子句 4. select子句 5. group子句 6. into子句 7. 排序子句 8. let子句 9. join子句 10. 小结 1. ...

  9. python中datetime模块

    Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime.time模块我在之前的文章已经有所介绍,它提供 的接口与C标准库time.h基本一致.相比于time模块 ...

  10. redis非特定类型命令

    1. key查询 keys my* #获取当前数据库中符合模式的所有key exists mykey #查看key是否还存在 2. 数据库操作 redis默认一个实例的数据库是16个[db0-db15 ...