UGUI进阶

UGUI进阶

##1Canvas三种渲染模式数据库

++1.1Canvas画布编程

++++Canvas画布是全部UGUI控件的根类,全部UGUI控件的绘制都必须在Canvas上。设计模式

++++建立Canvas有如下两种方式:网络

--1)直接添加Canvas函数

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

++1.2Canvas渲染模式学习

++++Canvas组件当中能够经过RenderMode来设置Canvas的渲染模式。动画

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

--1Screen Space-Overlay:不须要UI摄像机,Canvas画布将会一直出如今摄像机的最前面。.net

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

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


++1.3Screen Space-Overlay模式

++++画布将呈如今摄像机最前面,其余全部物体都会被遮挡到,即便没有主摄像机,画布也会显示出来。

++1.4Screen Space-Camera模式

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

++1.5World Space模式

++++此模式下Canvas至关于三维世界中的一部分,至关于一个GameObject,能够对其进行平移,缩放,旋转。


##二、UGUI布局组件

++2.1LayoutGroup组件

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

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

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

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

++2.2Horizontal Layout Group

++++属性:

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

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

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

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


++2.3Vertical Layout Group

++++属性:

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

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

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

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


++2.4Grid Layout Group

++++属性:

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

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

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

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

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

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

--Constraint :填充方式,能够固定行和列。


##3、拖动效果

++3.1ScrollView

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

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

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

--Scrollbar Horizontal为横向滑动条,

--Scrollbar Vertical为纵向滑动条。


++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。


++3.3、自定义滑动视图

++++步骤:

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

并给其添加ScrollRect组件。

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

          并将其赋值给Scroll RectContent属性。

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

          让子视图可以垂直布局。

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


##4、回调函数

++4.一、EventSystem

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

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

--2StandaloneInputModule:继承自BaseInputModule

--3TouchInputModule:继承自BaseInputModule

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

++++一个场景当中只能有一个EventSystem,而且须要BaseInputModule组件才能协助工做


++4.二、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.三、事件使用示例

++++以给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(“立钻哥哥发出:按钮点击相应事件);

    }

}


++++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引擎基础http://www.javashuo.com/article/p-beommoeb-ka.html

++++Unity面向组件开发http://www.javashuo.com/article/p-eigmuvut-dt.html

++++Unity物理系统http://www.javashuo.com/article/p-nqvvciwv-kd.html

++++Unity2D平台开发http://www.javashuo.com/article/p-ycaagdtj-hs.html

++++UGUI基础http://www.javashuo.com/article/p-rukxwckw-mc.html

++++UGUI进阶http://www.javashuo.com/article/p-wcatruhq-gt.html

++++UGUI综合http://www.javashuo.com/article/p-dkccmqii-gg.html

++++Unity动画系统基础http://www.javashuo.com/article/p-mbrdouxy-dq.html

++++Unity动画系统进阶http://www.javashuo.com/article/p-aqaqpbkh-bp.html

++++Navigation导航系统http://www.javashuo.com/article/p-dswwllas-t.html

++++Unity特效渲染http://www.javashuo.com/article/p-ckojjyfj-bp.html

++++Unity数据存储http://www.javashuo.com/article/p-bvlzynso-m.html

++++Unity中Sqlite数据库http://www.javashuo.com/article/p-ejutsbxl-ca.html

++++WWW类和协程http://www.javashuo.com/article/p-dbwmhsav-cy.html

++++Unity网络http://www.javashuo.com/article/p-sqrlntgh-dw.html

++++C#事件http://www.javashuo.com/article/p-zmwruvql-gm.html

++++C#委托http://www.javashuo.com/article/p-uozpymaf-gh.html

++++C#集合http://www.javashuo.com/article/p-sfqfdqsf-ex.html

++++C#泛型http://www.javashuo.com/article/p-xrttqngo-ee.html

++++C#接口http://www.javashuo.com/article/p-vhlfplgv-dm.html

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

++++C#中System.String类http://www.javashuo.com/article/p-olslkfao-cq.html

++++C#数据类型http://www.javashuo.com/article/p-hmabbtmc-ba.html

++++Unity3D默认的快捷键http://www.javashuo.com/article/p-wuwcrclr-s.html

++++游戏相关缩写http://www.javashuo.com/article/p-mwacxwca-gm.html

++++设计模式简单整理http://www.javashuo.com/article/p-rngqugib-hg.html

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

++++UML类图http://www.javashuo.com/article/p-sxberuew-bm.html

++++Unity知识点0001http://www.javashuo.com/article/p-ryvdxxjr-ep.html

++++U3D_Shader编程(第一篇:快速入门篇)http://www.javashuo.com/article/p-kyppgrac-gz.html

++++U3D_Shader编程(第二篇:基础夯实篇)http://www.javashuo.com/article/p-qkyowtli-hv.html

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


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