UGUI进阶

UGUI进阶

##1Canvas三种渲染模式

++1.1Canvas画布

++++Canvas画布是所有UGUI控件的根类,所有UGUI控件的绘制都必须在Canvas上。

++++创建Canvas有以下两种方式:

--1)直接添加Canvas

--2)添加控件的时候由系统自动添加。

++1.2Canvas渲染模式

++++Canvas组件当中可以通过RenderMode来设置Canvas的渲染模式。

++++Canvas总共有以下三种渲染模式:

--1Screen Space-Overlay:不需要UI摄像机,Canvas画布将会一直出现在摄像机的最前面。

--2Screen Space-Camera:需要一个UI Camera,支持UI前方显示3D模型和粒子系统。

--3World SpaceUI控件称为3D场景当中一部分。

UGUI进阶_第1张图片

++1.3Screen Space-Overlay模式

++++画布将呈现在摄像机最前面,其他所有物体都会被遮挡到,即使没有主摄像机,画布也会显示出来。

++1.4Screen Space-Camera模式

++++该模式下可以设置Plane DistanceCanvas与摄像机的距离,三维物体处于Canvas与摄像机之间的物体将会被显示出来,Canvas后面的将会被覆盖。

++1.5World Space模式

++++此模式下Canvas相当于三维世界中的一部分,相当于一个GameObject,可以对其进行平移,缩放,旋转。


##2、UGUI布局组件

++2.1LayoutGroup组件

++++Unity为我们提供了布局组件,便于对子控件进行布局,一个控件上面只能有一种布局组件,布局组件有以下三种:

--1Horizontal Layout Group(水平布局)

--2Vertical Layout Group(垂直布局)

--3Grid Layout Group(网格布局)

++2.2Horizontal Layout Group

++++属性:

--Padding:上下左右的边距。

--Spacing :子控件在水平方向上的间距。

--Child Alignment :子控件在水平方向上的排列方式。

--Child Force Expand :自适应宽高,是否强行扩大布局元素以填补额外可用的控件。

UGUI进阶_第2张图片

++2.3Vertical Layout Group

++++属性:

--Padding :上下左右的边距。

--Spacing :子控件在垂直方向上的间距。

--Child Alignment :子控件在垂直方向上的排列方式。

--Child Force Expand :自适应宽高,是否强行扩大布局元素以填补额外可用的控件

UGUI进阶_第3张图片

++2.4Grid Layout Group

++++属性:

--Padding :上下左右的边距。

--Cell Size :单元格的大小。

--Spacing :单元格在XY轴方向上的间距。

--Start Corner :第一个元素开始的位置。

--Start Axis :元素排列沿着哪一个方向轴。

--Child Alignment :子元素对齐方式。

--Constraint :填充方式,可以固定行和列。

UGUI进阶_第4张图片

##3、拖动效果

++3.1ScrollView

++++1是使用滑动视图制作的一个界面视图,可以上下滑动查看更多的选项。

++++2ScrollViewHierarchy视图当中的层级视图,其中:

--Viewport为滑动视图显示的内容,

--Scrollbar Horizontal为横向滑动条,

--Scrollbar Vertical为纵向滑动条。

UGUI进阶_第5张图片

++3.2ScrollRect

++++ScrollView滑动视图当中起滑动功能的组件为ScrollRect,通过ScrollRect可以设置跟滑动相关的属性。

++++属性(以下属性都可以在程序中通过ScrollRect组件获取)

--Content :可滑动的区域。

--Horizontal, Vertical :水平,竖直方向是否可滑动。

--Movement Type :滑动方式,包括(无限制滑动,弹力限制,无弹力限制)

--Elasticity :回弹的弹力大小。

--Inertia :惯性。

--Deceleration Rate :减速的速率。

--Scroll Sensitivity :滑动的灵敏度。

--Horizontal Scrollbar :横向滑动条。

--Vertical Scrollbar :竖向滑动条。

++++其他常用的属性:

--normalizedPosition :滚动视图所处的位置,值的范围为(0, 0)至(1, 1)。

--horizontalNormalizedPosition :滚动视图水平方向上所处的位置,取值范围0~1

--verticalNormalizedPosition :滚动视图竖直方向上的位置,取值范围为0~1。

UGUI进阶_第6张图片

++3.3、自定义滑动视图

++++步骤:

--步骤一: 创建滑动视图取名为 ScrollButton

并给其添加ScrollRect组件。

--步骤二: 在ScrollButton下创建内容视图取名为Content

          并将其赋值给Scroll RectContent属性。

--步骤三: 给Content添加布局组件Vertical Layout Group

          让子视图能够垂直布局。

    --步骤四: 给ScrollButton添加Mask组件,超过ScrollButton本身大小的不显示。

UGUI进阶_第7张图片

##4、回调函数

++4.1、EventSystem

++++EventSystem对象下有三个组件:

--1EventSystem:主要用于负责处理输入,射线投射以及发送事件。

--2StandaloneInputModule:继承自BaseInputModule

--3TouchInputModule:继承自BaseInputModule

++++BaseInputModule是一个基类模块,负责发送输入事件(点击,拖拽,选中)到具体对象。

++++一个场景当中只能有一个EventSystem,并且需要BaseInputModule组件才能协助工作

UGUI进阶_第8张图片

++4.2、UGUI的回调方法

++++输入模块StandaloneModuleTouchInputModule两个组件会检测到用户的一些输入事件,并且以事件的方式通知目标对象。实现这些回调方法需要实现相应的接口。

++++常用的回调事件:

--void OnPointerEnter(PointerEventData eventData) IPointerEnterHandle :鼠标进入

--void OnPointerExit(PointerEventData eventData) IPointerExitHandler :鼠标离开

--void OnPointerDown(PointerEventData eventData) IPointerDownHandler :鼠标点下

--void OnPointerUp(PointerEventData eventData) IPointerUpHandler :鼠标抬起

--void OnPointerClick(PointerEventData eventData) IPointerClickHandle :鼠标点击

--void OnBeginDrag(PointerEventData eventData) IBeginDragHandler :开始拖拽

--void OnDrag(PointerEventData eventData) IDragHandler :拖拽中

--void OnEndDrag(PointerEventData eventData) IEndDragHandler :结束拖拽

++4.3、事件使用示例

++++以给Button添加事件为例,给Button添加事件有三种方式:

--1、实现接口,触发回调事件。

--2、在Unity3D引擎当中绑定。

--3、给按钮添加监听事件。

 

++++1)实现接口,触发回调事件

using UnityEngine.UI;

using UnityEngine.EventSystems;

 

public class ButtonController: MonoBehaviour, IPointerClickHandler{

    public void OnPointerClick(PointerEventData eventData){

        Debug.Log(Btn Click);

    }

}

 

++++2)在Unity3D引擎当中绑定

public class ButtonController : MonoBehaviour{

    public void ButtonClickListerner(){

        Debug.Log(“立钻哥哥发出:按钮点击相应事件);

    }

}

UGUI进阶_第9张图片

++++3)给按钮添加监听事件

void Start(){

    button = GetComponent<Button>();

    button.onClick.AddListener(BtnClick);

}

 

void BtnClick(){

    Debug.Log(BtnClickListener);

}



#立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/

++立钻哥哥推荐的拓展学习链接(Link_Url

++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/

++++Unity引擎基础https://blog.csdn.net/vrunsoftyanlz/article/details/78881685

++++Unity面向组件开发https://blog.csdn.net/vrunsoftyanlz/article/details/78881752

++++Unity物理系统https://blog.csdn.net/vrunsoftyanlz/article/details/78881879

++++Unity2D平台开发https://blog.csdn.net/vrunsoftyanlz/article/details/78882034

++++UGUI基础https://blog.csdn.net/vrunsoftyanlz/article/details/78884693

++++UGUI进阶https://blog.csdn.net/vrunsoftyanlz/article/details/78884882

++++UGUI综合https://blog.csdn.net/vrunsoftyanlz/article/details/78885013

++++Unity动画系统基础https://blog.csdn.net/vrunsoftyanlz/article/details/78886068

++++Unity动画系统进阶https://blog.csdn.net/vrunsoftyanlz/article/details/78886198

++++Navigation导航系统https://blog.csdn.net/vrunsoftyanlz/article/details/78886281

++++Unity特效渲染https://blog.csdn.net/vrunsoftyanlz/article/details/78886403

++++Unity数据存储https://blog.csdn.net/vrunsoftyanlz/article/details/79251273

++++Unity中Sqlite数据库https://blog.csdn.net/vrunsoftyanlz/article/details/79254162

++++WWW类和协程https://blog.csdn.net/vrunsoftyanlz/article/details/79254559

++++Unity网络https://blog.csdn.net/vrunsoftyanlz/article/details/79254902

++++C#事件https://blog.csdn.net/vrunsoftyanlz/article/details/78631267

++++C#委托https://blog.csdn.net/vrunsoftyanlz/article/details/78631183

++++C#集合https://blog.csdn.net/vrunsoftyanlz/article/details/78631175

++++C#泛型https://blog.csdn.net/vrunsoftyanlz/article/details/78631141

++++C#接口https://blog.csdn.net/vrunsoftyanlz/article/details/78631122

++++C#静态类https://blog.csdn.net/vrunsoftyanlz/article/details/78630979

++++C#中System.String类https://blog.csdn.net/vrunsoftyanlz/article/details/78630945

++++C#数据类型https://blog.csdn.net/vrunsoftyanlz/article/details/78630913

++++Unity3D默认的快捷键https://blog.csdn.net/vrunsoftyanlz/article/details/78630838

++++游戏相关缩写https://blog.csdn.net/vrunsoftyanlz/article/details/78630687

++++设计模式简单整理https://blog.csdn.net/vrunsoftyanlz/article/details/79839641

++++U3D小项目参考https://blog.csdn.net/vrunsoftyanlz/article/details/80141811

++++UML类图https://blog.csdn.net/vrunsoftyanlz/article/details/80289461

++++Unity知识点0001https://blog.csdn.net/vrunsoftyanlz/article/details/80302012

++++U3D_Shader编程(第一篇:快速入门篇)https://blog.csdn.net/vrunsoftyanlz/article/details/80372071

++++U3D_Shader编程(第二篇:基础夯实篇)https://blog.csdn.net/vrunsoftyanlz/article/details/80372628

++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/


--_--VRunSoft : lovezuanzuan--_--

你可能感兴趣的:(UGUI进阶)