NGUI scroll view 刷新

2015年01月21日 09:35 0 点赞 0 评论 更新于 2025-11-21 14:57

概览

在NGUI中,一个被裁剪的UIPanel通常是不完整的,除非它能像滚动视图那样实现拖动功能。下面将详细介绍如何将一个Panel转化为滚动视图,以及滚动视图的相关设置和限制。

将Panel转化为滚动视图

将Panel转化为滚动视图只需简单的三步:

  1. 添加滚动视图组件:选择你想要添加滚动视图的Panel,在场景视图中右键打开菜单,选择“Attach -> Scroll View”。同时,检查Panel的“Clipping”属性,确保其值为“Soft Clip”。
  2. 调整滚动视图矩形:此时你已经拥有了一个滚动视图,通过拖动紫色的手柄来调整它的矩形范围,操作方式类似于选择挂件的矩形。
  3. 添加拖动脚本:最后一步是为至少一个碰撞器添加UIDragScrollView脚本。具体操作是选择碰撞器,在场景视图中右键,选择“Attach -> Drag Scroll View”。

需要注意的是,如果你有多个碰撞器,那么每个碰撞器都需要添加“Drag Scroll View”脚本,这样它们才能用于拖动面板。例如,对于一个横向的滚动列表,你需要为列表中的所有对象都添加“Drag Scroll View”脚本。另外,右键菜单内容是上下文关联的,所以如果你右击一个没有碰撞器的挂件,将不会看到“Drag Scroll View”选项。

滚动视图的选项设置

Scroll View有一些选项可以进行调整,下面详细介绍这些选项的功能:

  • Movement:该选项用于选择滚动面板的滚动方向,你可以选择水平滚动、垂直滚动,也可以选择“Unrestricted”实现随意拖动。如果你想自定义移动,还可以使用“Custom”设置x和y值。
  • Drag Effect:控制当你拖动滚动视图时的表现效果。“MomentumAndSpring”是类似iOS默认的行为。
  • ScrollWheelFactor:如果你想让滚动面板可以通过鼠标滑轮滚动,可设置该值。若要让鼠标滑轮反向滚动面板,可设置为负数。
  • Momentum Amount:控制开始拖动滚动视图的灵敏度。你可以根据需要调整这个值,使其更灵敏或更不灵敏。
  • Reset Position:控制当视图被程序重置时的位置。(0, 0)表示左上角,如果你想要中间位置,可以指定(0.5, 0.5)。
  • Restrict Within Panel:在大多数情况下,你会使用该选项,它可以将滚动内容限制在面板范围内。
  • Cancel Drag If Fits:该选项可以防止内容被拖出区域。如果关闭此选项,内容可以被拖动到边界外,但会有一定的阻力。
  • Smooth Drag Start和IOS Drag Emulation:这两个选项通常保留默认值即可。

此外,如果你有水平或垂直滚动条,还可以在对应的域中指定它们。指定后,你还能选择滚动条的显示条件。

限制

在NGUI 3.5.5或更早版本中,Scroll View只是裁剪它里面的挂件。如果内嵌了其他Scroll View,不会发生裁剪,只有一个裁剪会生效。不过,NGUI 3.5.6去除了这个限制。

实用技巧

技巧1

建议将滚动条的“Show Condition”设置为“OnlyIfNeed”,这样滚动条只会在必要的时候显示。

技巧2

如果你想要创建一个无尽的Scroll View,可以附加一个UIWrapContent,具体实现可参考相关文档。