Unity UGUI原生组件学习

1 Image

在这里插入图片描述
创建Image,如图所示
1.EventSystem 监听键盘的输入和鼠标的点击事件(屏幕触摸事件)
2.没有相机,也可以看到,自带的渲染机制
3.Canvas上的组件调整Render Mode
-Overlay UI永远显示到屏幕的最前方
在这里插入图片描述
-Camera 可以指定一个用来渲染的相机,可以渲染其他的物体到UI的前方。创建camera并设置
1 Clear Flags:Solid color
2Culling Mask: UI
3Projection:Orthographic
4.拖到画布Canvas的Render camera里面
5.调节Near Far : -10 10
在这里插入图片描述

3.WordSpace
在这里插入图片描述
4.Image:对应sprite
5.Raw Image:对应Texture,省内存
6.Text:对应label
在这里插入图片描述
Constant Pixel Size: 像素大小始终不变,多用于PC端,因为分辨率差异 不大
Scale width Screen Size: 宽高适配
Constant Physical Size: 根据物理单位来进行缩放

适配
16 :9 = 1.7 :1
16 :7 = 2.28 :1
实际分辨率大于设计分辨率,不用更改适配方案,左右留有黑边

UGUI中锚点有多种“形态”,当锚点是一个点时,表示该UI大小不变,位置会随参考点改变。当锚点是一个矩形区域时,UI的大小就会随该参考区域改变,当然非常灵活,锚点矩形的大小可以随意设置,甚至可以在某个方向长度为0。
在这里插入图片描述

public class UIEventlisterMake :EventTrigger {

    public static UIEventlisterMake Get(GameObject go)
    {
        UIEventlisterMake lis = go.GetComponent<UIEventlisterMake> ();
        if (lis  ==null) {
            lis = go.AddComponent<UIEventlisterMake> ();
        }
        return lis;
    }

    public delegate void VoidDelegate(GameObject go);
    public delegate void BoolDelegate(GameObject go,bool state);
    public BoolDelegate onEnter;
    public BoolDelegate onExit;
    public VoidDelegate onClick;
    public override void OnPointerClick(PointerEventData r)
    {
        if (onClick != null) {
            onClick (this.gameObject);
        }
    }
    public override void OnPointerEnter(PointerEventData r)
    {
        if (onEnter != null)
            onEnter (gameObject, true);
    }
    public override void OnPointerExit(PointerEventData r)
    {
        if (onExit != null)
            onExit (gameObject, false);
    }

}

2.给hgui按钮添加事件

public class ButtonText : MonoBehaviour ,IPointerClickHandler{




    public void Start()
    {
//        Button btn = GetComponent<Button> ();
//        btn.onClick.AddListener (OnClick2);
        UIEventlisterMake.Get (gameObject).onClick += OnClick3;
    }

    public void OnClick(int num)
    {
        Debug.Log ("OnClick: " +num);
    }
    public void OnClick2()
    { 
        Debug.Log ("OnClick: " );
    }
    public void OnClick3 (GameObject go)
    {
        Debug.Log (go.name);
    }

    private void OnDestroy()
    {
        Button btn = GetComponent<Button> ();
        btn.onClick.RemoveListener (OnClick2);
    }
    public void OnPointerClick(PointerEventData eventData)
    {
        Debug.Log ("继承接口");
    }
}

3 适应屏幕

public class ScreenChange : MonoBehaviour {

    private float design_width=  1280;
    private float design_heigtht= 720;
    private float reality_width;
    private float reality_heigtht;

    void Awake()
    {
        float designScale = design_width / design_heigtht;
        reality_width = Screen.width;
        reality_heigtht = Screen.height;
        float realityScale = reality_width / reality_heigtht;
        if (designScale > realityScale)   //实际分辨率小于设计分辨率,宽适配,上下留有黑边
        GetComponent<CanvasScaler> ().matchWidthOrHeight = 0;
    
    }

}

1.Canvas 画布是摆放容纳所有UI元素的区域,所有的UI元素需要在画布上组装
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4 Text控件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5 Image控件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6 Button控件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7 Toggle控件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8 Droup Down控件

在这里插入图片描述
动态设置选项与事件监听
在这里插入图片描述
在这里插入图片描述

9 Slider控件

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

10 ScrollBar控件

在这里插入图片描述
在这里插入图片描述

11 InputField控件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

12 ScrollRect 和 Mask遮罩

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

13 GridLayoutGroup 网格布局组件

在这里插入图片描述
在这里插入图片描述
12. HorizontalLayoutGroup 水平布局组件,解决不同大小(可编辑)的精灵排序问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
14.Vertical LayoutGrid 垂直布局组件,同上,都允许编辑子物体的大小
在这里插入图片描述
15.Anchor 和 Pivot组件

在这里插入图片描述
在这里插入图片描述

public class SkillText : MonoBehaviour {

    public Button skillBtn;
    public Image mask;
    public Text showText;
    private float timer = 3f;
    private float currentTime = 0f;
	void Start () {
        skillBtn.onClick.AddListener(OnBtnStart);
        OnBtnEnd();
    }
	void Update ()
    {
        if (mask.fillAmount<=1 && mask.fillAmount >0)
        {
            currentTime += Time.deltaTime;
            mask.fillAmount = (timer - currentTime) / timer;
            showText.text = Mathf.CeilToInt(timer - currentTime).ToString();
           if (mask.fillAmount ==0)
             {
              OnBtnEnd();
             }
        }
	}

    void   OnBtnStart()
    {
        skillBtn.interactable = false;
        mask.fillAmount = 1;
        showText.text = timer.ToString();
    }
    void  OnBtnEnd()
    {
        currentTime = 0f;
        skillBtn.interactable = true;
        mask.fillAmount = 0;
        showText.text = string.Empty;
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值