Unity UI系统 -- NGUI之基本组件(一)

640 阅读3分钟

「这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战

NGUI简介

 对于NGUI插件,从很高的程度上对UI进行优化,其主要的实现方法便是将零散的小UI图片,通过操作将其合并成一张图,这张图便可以称之为图集(Atlas) 指针图集的工作可以使用内置工作AtlasMaker,也可以使用Texture Packer组件

字体文件:

【windows + R 输入Fonts 显示本机字体】

  • 字体图集:将所用到的字体处理成一张图片进行使用,(适合英文)

  • TTF字体:直接使用TTF格式的字体进行文字显示

UI Label面板常用属性:

  • Font Size(字体大小 (与widget 里面的size大小有关))

    要显示中文的话需要将前面的NGUI改选为Unity

    控制文字显示的大小,以及基本样式(正常,粗体,斜体,斜体加粗体)

  • Text (文字)

    UILabel 要显示的文字,可以输入多行

  • MOdifier (调节器)

    控制英文的显示状态,正常,大写,小写,自定义

  • Overflow (溢出)

    当文字超过了Winget中的Size属性的大小时,如何处理显示:

  • ShrinkCntent:收缩内容【只能显示边框那么大】

  • ClampContent:夹持内容【能显示出几个字就显示几个字】

  • Use Ellipsis:是否使用省略符号

  • ResizeFreely:调整自由【widget中的Size自动同步FontSize】

  • ResizeHeight:调整高度【宽度固定,高度自动调整】

  • Gradient (渐变颜色) 文字从上到下渐变

  • Effect (特效)设置文字特效:颜色描边,投影等

  • Spacing (间距) 设置文字与文字之间的距离大小

  • Collor Tint (色彩化) 设置文字显示的颜色 (不会影响渐变)

按钮(UIButton)

按钮是制作UI过程中的最核心,最主要的控件之一、在游戏中按钮是用户操作最依赖的控件。无处不在,广泛地说,按钮核心在与接收是事件,任何可以接收事件的,都可称之为按钮,

UIButton面板属性

按钮的四种状态:

  • Normal:默认原始状态
  • Hover:经过停留状态
  • Pressed:按下状态
  • Disabled:不可用状态
  1. Colors数组

    使用颜色来描述按钮的四种状态

    如果不想让颜色影响图片的效果,可以将四种颜色全部选择为白色

  2. Sprites数组

    使用图片来描述四种状态

    按钮交互声音:

UIPlaySound组件

操作步骤:

Attach --> PlaySoundScript添加组件;

AudioClip 指定一个音频剪辑

指定Trigger触发该声音播放事件,常用的是OnClick;

按钮点击事件绑定

简单说几种代码解决:

1,这种方式是再脚本中编写固定的方法签名,然后将脚本挂在到按钮对象上。

using UnityEngine;
using System.Collections;

public class ButtonDemo : MonoBehaviour
{

    void OnDrag(Vector2 delta)
    {
        print("拖动"+delta);
    }
    
    void OnHover()
    {
        print("鼠标移上");
    }
    
    void OnClick()
    {
        print("点击");
    }

    void OnDoubleClick ()	
    {
        print("鼠标双击");
    }
}

2,通过定义添加VoidDelegate的形式添加交互操作(仅限处理OnClick事件)

using UnityEngine;
using System.Collections;

public class ButtonDemo : MonoBehaviour 
{

    void Start () 
    {
        //获取按钮组件
        UIButton btn = this.GetComponent<UIButton>();
        //创建委托
        EventDelegate dele1 = new EventDelegate(onBtnClickA);
        //将委托添加给按钮的Click
        btn.onClick.Add(dele1);
    }

    private void onBtnClickA()
    {
        print("按钮被点击了");
    }
}

3.通过交互对象添加UIEventListener组件方法处理按钮多种相关事件.

using UnityEngine;
using System.Collections;

public class ButtonDemo : MonoBehaviour 
{
      void Start () 
      {
          //为按钮添加UIEventListener组件,并处理点击事件
          UIEventListener ue = this.gameObject.AddComponent<UIEventListener>();
          //处理点击事件
          ue.onClick = onBtnClickA;
      }

      private void onBtnClickA(GameObject go)
      {
          print("按钮被点击了  onBtnClickA");
      }
}