零、
UISprite与UITexture:http://www.xuanyusong.com/archives/2697
一、组件
UIRoot:
a.Scaling Style
1.Flexible:使得UI在高分辨率下显得小,在低分辨率下显得大。好处是使UI尽可能贴近美术的设计
Minimum Height & Maximum Height:假如设置Minimum Height为720,那么在800 * 600下,UI还是按720那样运行
2.Constrained:使得UI在不同分辨率下能按宽 / 高进行比例缩放
3.ConstrainedOnMobiles:Flexible和Constrained的混合,在PC上是Flexible,在移动平台上是Constrained
UICamera:
UICamera脚本实际做的事是发送NGUI事件给所有被它所附加的摄像机所看见的对象。除此之外,它不对UI做任何事情了。实际上,如果你想要你的游戏中的对象能接收NGUI类似OnPress,OnClick等事件,那么你需要做的是附加UICamera脚本到你的Main Camera上。
NGUI回调函数(NGUI中的事件不止适用于UI,还适用于带有碰撞器的GameObject):
OnHover(isOver) 当鼠标移动到一个碰撞器或者移出一个碰撞器时触发 OnPress(isDown) 当鼠标按键在一个碰撞器上按下时触发 OnSelect(selected) 当鼠标按键在他按下的那个对象上松开时触发 OnClick() 和OnSelect的触发条件一样,还能通过额外检查鼠标是否还没移开。UICamera.currentTouchID告诉你按下了哪个按钮。 OnDoubleClick() 当在一个短时间内点击两次的时候触发。UICamera.currentTouchID告诉你点下了哪个按钮。 OnDragStart() 在发送OnDrag()通知之前触发 OnDrag(delta) 发送到正在被拖动的对象 OnDragOver(draggedObject) 发送给一个对象,当另一个对象被拖到它的区域时 OnDragOut(draggedObject) 发送给一个对象,当另一个对象被拖出它的区域时 OnDragEnd() 当拖动事件结束时被发送到一个dragged对象 OnInput(text) 当输入的时候触发(在通过点击选择一个碰撞器之后) OnTooltip(show) 当鼠标滑过一个collider而且一段时间没移开的时候 OnKey(KeyCode key) 当按下键盘或控制器的输入
即要触发NGUI中的事件,需要满足两个条件:
1.物体带有碰撞器
2.照射该物体的相机要挂上UICamera.cs
UI EventListener:事件监听
UI Text List:文本的滑动列表,内容只能通过程序添加
UI Drag Object:使物体可以被拖拽
UI Darg Resize:可以改变拖拽物体的大小
二、功能
0.
实例化到父物体下:NGUITools.AddChild
播放tween动画:tween的组件.playforward()
下拉菜单中文值的处理:string.trim()
获取当前组件:组件.current
逐字显示:Typewriter Effect
1.滑动列表
创建一个panel,然后创建一个子panel(用来放滑动内容),以及创建一个子sprite作为背景
内容panel:添加UI Scroll View,然后设置Clipping为Soft Clip
背景sprite:添加UI Drag Scroll View和box collider(注意设置大小)
2.背包系统
物品拖拽:自定义脚本,去继承UIDragDropItem,重写OnDragDropRelease,注意作为接收物品的格子,要有碰撞器
3.Hud
using UnityEngine; using System.Collections; public class NewBehaviourScript : MonoBehaviour { public Transform bloodTra; public Transform headTra; public Camera uiCamera; private float dis; void Start() { dis = Vector3.Distance(headTra.position, Camera.main.transform.position); } void Update () { bloodTra.position = CalculatePos(); bloodTra.localScale = CalculateSca(); } Vector3 CalculatePos() { Vector3 a = Camera.main.WorldToScreenPoint(headTra.position); Vector3 b = uiCamera.ScreenToWorldPoint(a); b.z = 0; return b; } //根据距离进行缩放 Vector3 CalculateSca() { float a = dis / Vector3.Distance(headTra.position, Camera.main.transform.position); return Vector3.one * a; } }