1,
NGUI的输入控件特点:
1.可以控制输入的最大字符数量
2.光标使用的字符:”carat char”
3.控制输入类型:Type
4.是否是密码输入框
5.字体颜色
6.按回车提交时要触发的函数"OnSubmit"
NGUI输入控件缺点:
1. 无法使用左右移动
2. 光标是”|”符号, 易与输入的符号相混
3. 不能点击定位
———————————————————————————————————————————————————————
2,UICamera是每个UI的重要组成部分.它负责发送Camera中所有NGUI的活动.如果场景中仅有一个Camera,要确保它附有 UICamera脚本.如果有多个相机,确保至少用来渲染UI的相机有UICamera脚本.当将这个脚本放在主相机上时,在游戏场景中的所有都将有 OnClick, OnHover, OnDrag等事件
Tooltip Delay:设定悬停与对象多少秒才执行OnTooltip事件.
如果使用Orthographic Projection相机,建议将相机的Size的尺寸设置为当前分辨率高度的一半.比如针对iPad的屏幕1024*768分辨率,就设置Size为 384.另外一种方法是保持Size是1,缩放UI的Root为该值的倒数,比如在iPad上获得完美尺寸你需要设置Root的缩放到1/384或者 0.002604167.第二种方法比较容易实行,不过物体在场景视图中照比其他物体会比较小.
3,
UIAnchor有多种用途,其中包括在多种分辨率的屏幕的相对定位.
如果你将它放在2D UI的root上,它会自动进行完美像素处理.
如果将它用于一个对象,它将辅助对象在屏幕上的定位,比如侧边或者角落.
比如放在一个精灵上,可以用来将精灵自动填满整个屏幕,比如做个背景.
HUD Camera是用来绘制该对象的相机,通常会自动选择的.
Side:设置锚点,有4个边,4个角和中心供选择.
Half Pixel Offset:让控件有半像素的位移以避免DirectX 9在Windows机器上的一个Bug.
Stretch To Fill:缩放填充,一般做背景时候会使用它.
Depth Offset:用于基于透视相机时调整计算点的深度.
Sliced Sprite(一个含有9个切片的Sprite,创建固定边框的控件最佳选择),一个Tiled Sprite(一个Sprite缩放填充整个自定义区域)和Filled Sprite(每个Sprite都会有一个单独的参数来控制哪些是可见的,常被用来做进度条或者滚动条)
提示:
如果对象有UIAnchor这个脚本,它自身的Transform将不接受你的修改,因为它受控于这个脚本.如果你希望添加基于这个锚点的位移,你可以添 加一个子对象.比如你希望有个控件始终在屏幕偏移(100,100)这个位置,你应该在层次面板做这样的结 构.UI->Anchor->Offset->Widget.
UIAnchor同样可用于非正交相机.
如果UIOrthoCamera附加到相机,用UIAnchor创建的界面将固定尺寸和位置,无论你将屏幕尺寸改成多大.
4,
Events-NGUI强大的事件系统
UIEvents-事件系统
你可以添加下面的方法脚本到控件或者带有碰撞盒的游戏对象,当然也可以赋予给相机,不过需要相机同时有UICamera脚本:
void OnHover (bool isOver):当鼠标移出或者悬停在某个碰撞器上的时候返回布尔值.在触摸设备上不会有作用.
void OnPress (bool isDown):当鼠标或者触摸到碰撞器发生布尔值返回.
void OnSelect (bool selected):当鼠标或者触摸从OnPress发生后的释放将会返回这个布尔值.
void OnClick():和OnSelect的产生条件相同,当点击或触摸碰撞器并且没有发生拖拽时候触发.
void OnDrag (Vector2 delta):当移动鼠标或者触摸按下时候位移超过特定阀值时触发.
void OnDrop (GameObject drag):当鼠标或触摸释放于从发生OnDrag的不同碰撞器伤触发.传递的参数是产生OnDrag的游戏对象.
void OnInput (string text):当一个OnSelect发生后在同一个碰撞器上触发输入.一般只有UIInput用它.
void OnTooltip (bool show):当鼠标悬停超过tooltipDelay时间后触发该命令.触摸设备上不会有作用.
可以用UICamera.lastCamera找到谁发出的事件,可用UICamera.lastHit得到谁接受这个事件,以及用UICamera.lastTouchPosition得到触摸或屏幕的位置
5,UIRoot类主要是为了确保你的GUI对像缩放倍数为 2/(Screen.height);而UICamera则是NGUI插件的基础核心类,这个类中定义了一系列的鼠标、键盘、触屏等动作的响应操作,场景中允许有多个UICamera存在也可以和Unity的主Camera共存;UIAnchor这个类是为了固定你的对象在屏幕中的位置,例如你将UIAnchor的属性Side设置为Center,则无论屏幕规格是多少UIAnchor里的对象在游戏中都会出现在屏幕的正中间。
6,Camera选项中有None,Simple2D,Advanced3d选项,分别用于创建不带camera的界面(这里如果已经有一个UI界面,我们只是想添加一个新的界面,可以选择这个),简单的2D界面(此选项没有Z轴效果),高级3D界面(此选项下的界面有Z轴效果,并且可以3D旋转,以此选项创建的UI有自适应分辨率的功能)。
7,
Correction主要用于修正因图标像素是奇数而出现的问题。
Color Tint可以在图标颜色的基础上为图标着色,
Clipboard是剪贴版的颜色,当我们选择一个Cilpboard颜色后,点击Paste可以将颜色粘贴到ColorTint的颜色上。
Spirit Type表示要创建的Spirit平铺方式,包括Simple,Sliced,Tiled,Filled。如果图标较小,我们需要平铺很大,但是又不想看出重复,可以选择sliced。
Filled选项下又包括Fill Dir(填充方向),FillAmount(填充量),Invert Fill(反转填充)三个选项,这三个主要用于修改填充为360旋转填充,水平,垂直填充等
8,一 UIRoot 建议添加一个Layer专门用来存放GUI对象,创建成功后可以看到有个UIRoot对象,UIRoot最主要的属性是 manualHeight,这个组件会确保它的所有子对象的缩放倍数是2/ manualHeight,如果你勾选了Automatic则缩放倍数会2/屏幕高度。要注意的是这个插件不能和UIOrthoCamera这个组件一起使用。
9, listView 先创建一个2D的游戏平面。接着给Panel面板绑定游戏组件,Unity导航菜单栏中选择Component->NGUI->Interaction->Grid,它主要设定ListView中每一个item的属性。继续在Unity导航菜单栏中选择Component->NGUI->Interaction->UIDraggablePanel,它主要设定listView的触摸区域以及与拖动条事件等。
Panel面板中一些需要注意的属性。
UIGrid(Script):Arrangement 选择Vertical表示这个ListView表示纵向,这里如果选择Horizontal表示该ListView是横向的。
Cell Width:ListView中每一个item的宽度。
Cell Height:listView中每一个item的高度。
UIDraggable Panel(Script):选项中的Scale非常重要,这里设置y = 1 表示ListView只支持纵向的拖动,如果设置X=1表示列表只支持横向的拖动,如果两个都=1表示列表同时支持横向与纵向的拖动。
Horizontal Scroll Bar 与 Vertical Scroll Bar表示横向或纵向的拖动条与listView结合,然而这里我们无需写一行代码,它会自动帮我们计算,将你的ListView与拖动条结合。
10,
NGUI类库说明
~/UI/
-
UIRoot, 控制其下控件的缩放方式,V2.3中可以使用Scaling Type控制,等于PixelPerfect时,当前页面高小于minimumHeight则进行缩放,其他高都是固定尺寸,大于maximumHeight则是放大;等于FixedSize时,按manualHeight为中间值,放大或缩小.
-
UIPanel,NGUI容器,可以对其下控件进行隐藏,静态组建可以设置widgetsAreStatic提高性能.
-
UICamera,附加在NGUI摄像机上,负责事件检测,配置按键,Layer等信息.
-
UIAnchor,方位控制类库,首先需要设置uiCamera=NGUI摄像机才能正确的工作,使用side属性来控制显示的位置.
-
UIAtlas,图集类库,辅助管理和选定Sprite图片和font图片集合.所有需要显示图片的地方都附加该组件.
-
UIFont,管理字体UV
-
UISprite,图片
-
UISlicedSprite,背景图,自动压缩图片四周,只留填充中间部分.
-
UIFilledSprite,可以控制动画显示图片.
-
UITextList,列表文本框
~/Interaction/
-
UIButtonColor,对象颜色控制,tweenTarget控制的UIWidget对象,Duration 动画持续时间,hover移上颜色,pressed点击颜色
-
UIButtonScale,对象大小控制,tweenTarget控制对象的Transform,hover移上的大小,pressed点击的大小
-
UIButtonPlayAnimation,动画播放控制,target控制的Animation, trigger 触发的类型,playDirection 控制播放的方向,Forward向前,Reverse逆转,Toggle交替,
-
UIButtonTween,控制带UITweener的对象播放动画.
-
UIButtonKeys,可以使用箭头键和Tab键选中对象.
-
UIDraggablePanel,附加在panel上,可以指定一个滚动条来控制panel其下内容的限制,panel需要设置clipping:soft/alpha clip;
-
UIDragObject,使附加可以响应鼠标点击拖动,Tanget 该属性如果不为空,则附加对象不会被拖动,tanget上指定的Transform对象会被拖动.
~/Tweening/
-
UITweener,间隔动画的基类,所有间隔组建都继承该类,用于执行update()
-
TweenPosition,TweenScale,TweenRotation,控制对象位置变化,Method 间隔的方法/模式,Style一次/循环/乒乓,Delay 等待时间,Duration 持续时间.
-
TweenTransform,同上,不过参数需要赋值某对象的Transform,一般使用空对象即可,可以同时应用到Position,Rotation,Scale.
~/Examples/../Other
-
PanWithMouse,根据鼠标反向转动附加对象,Degrees 偏移最大度数(Vector2), Range 灵敏度 越小越快.
-
Spin,控制附加对象旋转,rotationsPerSecond 每帧旋转的弧度数(按自身坐标系).
-
SpinWithMouse,使用鼠标控制对象的旋转.Speen 旋转速度,target 旋转目标 为空时默认自己.
-
TypewriterEffect,按时间显示文本, charsPerSecond 文本显示时间.
-
ChatInput,将UIInput输入的文本绑定UITextList对象.
-
UIItemStorage,组织商店表格,maxItemCount 最大数量,maxRows最大行数,maxColumns最大列,template组成商店表格的prefab, Spacing 组成对象的间距(需要包含自身宽度),Padding 边框宽度.