[UnityUI]NGUI备忘录

零、

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;
    }

}


你可能感兴趣的:(NGUI)