参考:http://forum.exceedu.com/forum/forum.php?mod=viewthread&tid=33091&extra=page%3D1
一、Panel相关
1、Alpha属性影响所有在panel下面的widget。所以可以用它来淡出整个窗口
2、如果你的UI需要被灯光影响,需要勾选上Normals。
二、Camera
1、UICamera真正做的事情是发送NGUI事件给所有被当前camera渲染的object,camera是UICamera脚本所在的那个。 其实这个脚本做的事情和UI无关。事实上如果你想让游戏里面的object接收OnPress、OnClick、OnDrag等这类事件,你需要把UICamera挂在你的主相机上
2、UICamera的选项Event Type用来决定脚本如何排序mouse或者touch触发的事件。如果是UI模式,这些事件顺序基于widget的depth——和渲染顺序一样。如果UICamera挂到了Main Camera上,那么就需要把这个选项修改成World模式。这样就会根据与相机的距离来排序点击到的object。
3、Event Mask用来决定哪些层会接收事件。大多数情况下你需要的就是“Everything”,这个值会与UnityEngine.Camera‘s Culling Mask进行逻辑与运算,有需要的话你可以微调这个值。如果你修改了UI的game object的Layer,记得调整Event Mask,否则你可能会发现UI不响应事件。
4、Allow Multi-Touch选项用来控制是否支持多点触碰。如果勾选掉,多点触碰也会当做单点触碰。
小贴士
UICamera发送以下事件给collider:
- OnHover (isOver) 发送时机为鼠标悬停(只触发一次)或者离开collider。
- OnPress (isDown) 发送时机为鼠标在collider上按下。
- OnSelect (selected)发送时机为鼠标点击和松开的时候都在同一个object上。
- OnClick ()发送时机和OnSelect一样,但是要求鼠标没有移动特别多。UICamera.currentTouchID表示按下的鼠标哪个键。
- OnDoubleClick ()发送时机为当在四分之一秒内click两次的时候。UICamera.currentTouchID表示按下的鼠标哪个键。
- OnDragStart ()发送时机为OnDrag()事件之前。
- OnDrag (delta) 发送时机为一个object被拖拽。
- OnDragOver (draggedObject)发送时机为其他的object拖拽到他的上面。
- OnDragOut (draggedObject)发送时机为其他的object拖拽出他的上面。
- OnDragEnd ()发送时机为drag事件结束。发送给被拖拽的object。
- OnInput (text)发送时机为输入的时候(在点击选择了一个collider之后)。
- OnTooltip (show) 发送时机为鼠标悬停在一个collider上一段时间没有移动。
- OnScroll (float delta)发送时机为鼠标滚轮滚动。
- OnKey (KeyCode key)发送时机为键盘或者输入控制器被使用的时候。
用他们到自己的脚本里面,只要实现相应的函数即可:
三、UIGrid
1、Arrangement的值决定了子节点的摆放位置。Horizonta让子节点向右排列,Vertical向下排列。
2、Max Per Line属性控制Horizontal排列时候的最大有多少列, Vertical排列的时候最大有多少行。
3、Cell Width和Height决定了所有条目的间隔。