NGUI第六课--Scroll View的使用
一、Scroll View简介
Scroll View是一个滚动视图的Panel,其具体效果在实际实现过程中会逐渐明晰。
二、创建Scroll View
方法一
先创建一个Sprite作为背景,并将该Sprite命名为“window”。接着在这个Sprite下面创建Scroll View,创建方法可参考对应图示(此处原文未给出图,可后续补充)。
方法二
在场景中选中已创建的Sprite(即“window”),右击选择“Create -- Scroll View”。这里是一个丰富的控件库,许多控件都能在此找到。
三、Scroll View挂载脚本及参数解析
UIScroll View脚本参数
创建完Scroll View后,会发现它挂载了两个脚本:UIPanel和UIScroll View。下面详细介绍UIScroll View的参数:
- MoveMent:用于选择滚动方向,可选择水平滚动、垂直滚动,也能选择“Unrestricted”实现随意拖动,还支持自定义移动方式。
- Drag Effect:此参数控制拖动效果。
- ScrollWheelFactor:若想让滚动面板通过鼠标滑轮滚动,可设置该值。若要使鼠标滑轮反向滚动面板,可设置为负数。
- Momentum Amount:该参数控制开始拖动滚动视图的时机。可根据实际需求调整此值,使拖动操作更灵敏或更不灵敏。
- Restrict Within Panel:此选项可将内容约束在Panel内部,在大多数情况下,建议选择该选项。
- Cancel Drag If Fits:启用此选项可防止内容被拖出区域;若关闭该选项,虽然可以将内容拖动到边界外,但会受到一定阻力。
- Smooth Drag Start和IOS Drag Emulation:这两个选项通常保留默认值即可。
UIPanel脚本解析
UIPanel是一个保存并管理其下面所有挂件的组件。它负责根据挂件的几何结构创建真正的draw call。如果没有Panel,任何内容都无法被绘制出来。对于熟悉Unity的开发者来说,可以将UIPanel类比为一个Renderer。
UIPanel继承了其子类UIRect的所有功能。所有的Panel都有一个Depth值,该值会影响其下面的所有挂件。在创建使用多个窗口的复杂UI时,通常建议每个窗口使用一个UIPanel,并确保各个panel不会拥有相同的depth值。若depth值相同,为了保证绘制顺序,draw call将会频繁分割,从而产生比平常更多的draw call。
(注:关于Panel的内容较为复杂,下节课将详细讲解,本节课仅作大概介绍。)
另外,创建Scroll View后,需要调整其宽高,使其与背景宽高一致。在场景中,若未显示出框,点击UIPanel脚本即可显示。
四、在Scroll View下添加Sprite
在Scroll View下创建一个Sprite,Atlas、Sprite和type的选择可参考对应图示(此处原文未给出图,可后续补充)。这里对图片选择没有严格要求,可根据个人喜好添加。
五、添加脚本并测试效果
为这个Sprite添加Box Collider和UIDragScrollView脚本。具体操作是在场景中选择Sprite,右击选择“Attach -- Box Collider”,再右击选择“Attach -- UIDragScrollView”。需要注意的是,一定要先添加Box Collider,然后将Scroll View赋值给UIDragScrollView。
运行程序后,拖动NGUI Sprite即可看到滚动效果。可以多复制几个Sprite并调整位置,再次运行程序,效果会更加明显。