[Unity3D-NGUI]UIAnchor的人话解释

原创 2013年12月01日 21:01:47
 作为一个摆2d UI出身的程序渣,自始至终对3D非常向往,于是打算从自己最熟悉的功能-平面UI来入手学习U3D这个令人哭笑不得的引擎。
第一篇日志献给UIAnchor这个组件,以此纪念小涛哥发明的屏幕分辨率自适应方法。

首先用人话解释一下我理解的锚点。
请通读这句话,并无视其中的引号,这个引号是帮助你理解的。
 锚点就是一个东西(如精灵,label,button等)“浓缩”成一点的那个点,我们为一个面积设置坐标的时候,就是设置了这个点的坐标。
exp:如果设置label的左下角为锚点(AP_BottomLeft),那么我设置精灵位置为(0,100)点,就是设置了 这个精灵左下角 的位置 。
也就是我们给精灵摆坐标的时候,就是用锚点去“找”那个指定的坐标点。

在NGUI中, 锚点的运用可以方便地将 子控件 与 父容器 对齐。

 下边通过实验来说明一下这个锚点机制究竟该怎么用。

1.删除自带的主摄像机,建立一个NGUI,删除UI Root(2D)-> Camera下的所有物体,咱们从头开始。 
2.添加一个Panel,加入到Camera之下,注意,这个Panel可是有用的!因为它就是本实验中的“父容器”!
 
选定摄像机,
 NGUI->create->panel
 
3.【补充说明:其实任何一个空体(emptyobject)加入某些组件之后,都能成为一个 拥有该功能 的组件!】在父容器Panel下,我们创建一个空体,并给他赋予一个UIAnchor的属性(选中这个GameObject,NGUI->attach->Anchor),如图。
 
4.到了这里,我们可以发现,UIAnchor其实只是一个script,它暴露了一些匪夷所思的public口子,其中非常重要的是三个,如下图的注解
这些控件拖拽传入之后,翻译成人话:我要把“子物体的锚点”放置在(container)的side位置上。 例如:我要把精灵的锚点放在panel的center位置上。
下边的两个量,是微调用的。朋友们可以回来自己试试看看效果。
再传一张图吧。。我是不是有点太墨迹了。。



5.这个UIAnchor组件仿佛就是Panel这个父容器的一个“属性”,有点类似于cocos2d-x摆UI的时候,我们必须要根据父控件的AnchorPoint来摆一样,为父容器添加UIAnchor,就相当于给它set了AnchorPoint,因为我们设置了UIAnchor的container。
与cocos2d-x不同,我们想让父容器的锚点在摆UI的时候生效,就要在UIAnchor下边添加子物体,而不是直接在父容器下添加物体(而cocos2d-x会直接Panel->addchild即可。)


reset一下GameObject(万万别忘了,否则你一会儿会看到一个超大的sprite)
在GameObject下添加一个sprite(我懒得改GameObject的名字了。。。),除了纹理图片那一个项目,咱别的不设置了,为了研究它的原理~


 6.我现在,非常想让这个sprite右上角对齐到Panel的右上角(假如这就是我们的需求),我们应该怎么做呢?理清一下思路:
首先我们要找到Panel的右上角,具体怎么找,看步骤4,把side设置为右上角;
第二,我们要找到sprite的右上角,如下图所示,设置精灵的pivot为右上角(吐槽一下NGUI自认为这样会让人很明白,倒是不如跟UIAnchor一样简洁明了。) 

第三,reset一下sprite的三维,旋转,缩放。。。(一定要reset,这一步是精髓,如果大家不reset,自己可以去找找别扭- -跟我一样- -)
第四,我们可以发现我们的需求满足了,建议大伙每个方向都摆摆,熟悉一下流程和思路。

看两遍这个文章,琢磨琢磨anchorpoint的用法,如果想要实践,请百度一下NGUI官方例子,自己去实现一下,印象会很深刻!
谢谢大伙,希望有所收获~ 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

【Unity插件】NGUI核心组件之UIAnchor

NGUI:UIAnchor Anchor脚本可以用来实现多个目的,这些在Example0里面都有用到。 1. 只要提供一个half-pixel偏移量,它可以让一个控件的位置在Windows...

NGUI控件说明(中文) UIAnchor

原文:http://www.tasharen.com/forum/index.php?topic=6712.0 概览 UIAnchor让你可以固定game objects在屏幕...

unity3D学习之NGUI插件

  • 2016-04-11 00:21
  • 18.18MB
  • 下载

Unity3D NGUI3.6.9

  • 2015-02-04 22:16
  • 13.50MB
  • 下载

Unity3d NGUI的使用(四)(TexturePacker与UIAtlas生成prefabs)

TexturePacker可以将游戏素材零碎的图片打包在一块,这样更方便读取 而与Unity3d prefabs组合起来使用,使得读取图片达到一个速率更高的层次 Texture...

unity3d的NGUI插件

  • 2015-02-10 10:47
  • 11.23MB
  • 下载

【Unity3D插件】NGUI屏幕自适应

屏幕自适应 NGUI可以比较方便的实现屏幕自适应,但是它的官方教程里面针对这个问题没有详细的教程,所以可能在实现的时候会走比较多的弯路。以下是我在开发过程中找到的一个比较方便的实现方法。 ...

Unity3d插件NGUI

  • 2012-03-26 17:38
  • 5.18MB
  • 下载

unity3D NGUI 3.9.9

  • 2017-09-05 15:14
  • 12.52MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)