UIDragDetector 实例可以促进和鼓励与体验中的 2D 用户界面元素的互动,例如滑块和旋转器。关键功能包括:
在任何 GuiObject 实例下放置一个 UIDragDetector ,使其可以通过所有输入拖动而不需要单行代验证码。
从多个DragStyle选项中选择,定义对象如何通过ResponseStyle响应运动,并可选地应用轴、移动限制或拖动边界。
脚本可以回应拖动对象的操纵,驱动逻辑响应,例如调整设置。
在工作室工作,只要你不使用选择、移动、缩放或旋转工具,或某些插件或工作室的编辑器工具。
概要
属性
将鼠标激活时显示的滚动器图标设置为显示在此 UIDragDetector 的父辈上。
当检测器的 BoundingUI 被设置时,决定拖动的 UI 对象的边界行为。
边界区域为父 GuiObject 定义拖动边界的实例。
将鼠标悬停在此 UIDragDetector 的父级上时显示的鼠标指针设置为显示。
当 UIDragDetector 设置为 DragStyle 时,拖动轴为 Enum.UIDragDetectorDragStyle.TranslateLine 实例。
设置定义输入/输出相对性的模型,该模型由自定义拖动函数提供。
当前拖动执行的旋转。
设置定义从自定义拖动函数输入/输出空间的范式。
用于生成建议运动的方法。
当前拖动执行的翻译以 UDim2 值表达。
无论 UIDragDetector 是否回应用户输入。
与 MinDragAngle 一起,阻止检测器尝试生成旋转运动。
与 MinDragTranslation 一起,阻止检测器尝试生成线性/平面运动。
与 MaxDragAngle 一起,阻止检测器尝试生成旋转运动。
与 MaxDragTranslation 一起,阻止检测器尝试生成线性/平面运动。
一个 GuiObject 实例,其本地空间和绝对中心位置是检测器的参考空间和起源。
用于定义提议动作的回应的方法论。
最大拖动速度用于翻译。
每秒钟最大角度 UIDragDetector 可以旋转。
Enum.UIDragSpeedAxisMapping 值决定了 X / Y 维度拖动速度。
方法
添加一个函数来修改或限制提出的运动。
返回当前拖动的参考起源的引用位置 UDim2 。
返回当前拖动的参考元素的参考旋转。
传递一个函数,如果和仅如果 DragStyle 设置为 Enum.UIDragDetectorDragStyle.Scriptable 。
活动
当用户继续拖动 UI 元素后,DragStart 已启动时,发生火焰。
当用户停止拖动 UI 元素时发生火灾。
当用户开始拖动 UI 元素时发生火灾。
属性
ActivatedCursorIcon
将鼠标激活时显示的滚动器图标设置为显示在此 UIDragDetector 的父辈上。如果此属性为空白,探测器将使用默认标志。
要更改激活的鼠标标志,将此属性设置为您想要使用的图像的资产 ID。
BoundingBehavior
当检测器的 BoundingUI 设置时,决定拖动的 UI 对象的边界行为。请参阅 Enum.UIDragDetectorBoundingBehavior 每个设置的行为细节。
BoundingUI
设置时,UIDragDetector 实例不会允许父GuiObject 的边界超出 BoundingUI 实例的边界。
请注意,如果父 GuiObject 的一部分超出了 BoundingUI 边界,拖动开始时的初始输入位置和拖动期间的相对位置将被用于检测边界直到整个拖动对象都在边界内,然后对象将被限制在边界内。
CursorIcon
将鼠标悬停在此 UIDragDetector 的父级上时显示的鼠标指针设置为显示。如果此属性为空白,探测器将使用默认标志。
要更改鼠标标志,将此属性设置为您想要使用的图像的资产 ID。
DragAxis
Vector2 值,定义拖动对象的移动轴当 DragStyle 设置为 Enum.UIDragDetectorDragStyle.TranslateLine 时。轴在 UIDragDetector 定义,除非 ReferenceUIInstance 被定义,否则轴在该实例的本地空间定义。
DragRelativity
仅适用于通过 SetDragStyleFunction() 或 AddConstraintFunction() 注册的自定义拖动函数。设置定义注册函数输入/输出相对性的范式。
例如,将注册函数的 返回设置为 将移动检测器的父 到 在指定的 中,而将相同的 返回设置为 将移动检测器的父 在指定的 。
DragRotation
当前拖动执行的旋转。这个值在 UIDragDetector 定义为度与本地空间相关,除非 ReferenceUIInstance 被定义,否则旋转在该实例的本地空间和其正面的 X 轴中定义。
在没有激活拖动以旋转拖动对象时,可以更改此属性。
DragSpace
仅适用于通过 SetDragStyleFunction() 或 AddConstraintFunction() 注册的自定义拖动函数。设置定义注册函数输入/输出空间的范式。
例如,如果探测器的父GuiObject是旋转的父GuiObject的孩子:
将注册函数的 UDim2.fromOffset(1, 0) 返回设置为 Enum.UIDragDetectorDragSpace.Parent 的属性,将检测器的父 GuiObject 移到其父元素的旋转影响的本地空间的右边 1 像素。
将注册函数的 UDim2.fromOffset(1, 0) 返回设置为 Enum.UIDragDetectorDragSpace.LayerCollector 的属性,将移动检测器的父 GuiObject 到空间的 LayerCollector 的右边 1 像素。
DragUDim2
当前拖动执行的翻译以 UDim2 值表达。翻译通过 Offset 或 Scale 值更改取决于 DragRelativity 值,并且与检测器的本地空间无关,除非定义了 ReferenceUIInstance 。
在没有激活拖动以移动拖动对象时,可以更改此属性。
MaxDragAngle
如果此属性大于 MinDragAngle ,旋转将被限制在 MinDragAngle 和 MaxDragAngle 范围内。正向值会阻止顺时针旋转,而负向值会阻止反时针旋转。
这不是约束;它只是阻碍探测器尝试产生运动以保持在限制内。请参阅AddConstraintFunction()添加自定义约束到拖动。
仅相关如果 DragStyle 是 Enum.UIDragDetectorDragStyle.Rotate 。
MaxDragTranslation
如果相应的 Offset 和/或 Scale 值大于 MinDragTranslation 在所有维度中的值,线性/平面翻译将被卡在 MinDragTranslation 和 MaxDragTranslation 范围内。
这不是约束;它只是阻碍探测器尝试产生运动以保持在限制内。请参阅AddConstraintFunction()添加自定义约束到拖动。
仅相关如果 DragStyle 是 Enum.UIDragDetectorDragStyle.TranslateLine 或 Enum.UIDragDetectorDragStyle.TranslatePlane 。
MinDragAngle
如果此属性小于 MaxDragAngle ,旋转将被限制在 MinDragAngle 和 MaxDragAngle 范围内。正向值会阻止顺时针旋转,而负向值会阻止反时针旋转。
这不是约束;它只是阻碍探测器尝试产生运动以保持在限制内。请参阅AddConstraintFunction()添加自定义约束到拖动。
仅相关如果 DragStyle 是 Enum.UIDragDetectorDragStyle.Rotate 。
MinDragTranslation
如果相应的 Offset 和/或 Scale 值小于 MaxDragTranslation 在所有维度中的值,线性/平面翻译将被限制在 MinDragTranslation 和 MaxDragTranslation 范围内。
这不是约束;它只是阻碍探测器尝试产生运动以保持在限制内。请参阅AddConstraintFunction()添加自定义约束到拖动。
仅相关如果 DragStyle 是 Enum.UIDragDetectorDragStyle.TranslateLine 或 Enum.UIDragDetectorDragStyle.TranslatePlane 。
ReferenceUIInstance
一个 GuiObject 实例,其本地空间和绝对中心位置是检测器的参考空间和起源。设置此参考会影响属性,例如 DragUDim2 , DragRotation , 以及 DragAxis 的行为。
ResponseStyle
一旦提出的动作已计算并可能受到限制,这种方法被用来确定如何移动(或不移动工具)受到 《2》 《5》 影响的 《2》 。请参阅Enum.UIDragDetectorResponseStyle获取选项。
SelectionModeDragSpeed
定义翻译的最大拖动速度为第一祖先 Scale 和 Offset 的组合,或 ScreenGui 或 SurfaceGui 属于第 UIDragDetector 。这个值必须是正的,任何低于 0 的值都会被限制为 0 。
方法
AddConstraintFunction
添加一个函数来修改或限制提出的运动。函数接受输入 UDim2 (位置) 和浮动 (旋转) 的 提出的 运动和返回一个 UDim2 和浮动的 修改的 或未修改的运动。您可以添加多个函数,这些函数将按照 priority 的顺序调用,并将结果传递在链中。
输入可以用 DragSpace 属性定义的空间表达,也可以用 DragRelativity 属性定义的最终期望位置/旋转。输出应在同一空间和相对性下表达,除非被返回指定的 Enum.UIDragDetectorDragRelativity 和 Enum.UIDragDetectorDragSpace 作为第三和第四个返回值。
要删除添加的约束函数,请在返回的连接对象上调用 Disconnect()。
参数
通过此方法添加的函数的优先级顺序。更高的值高于更低的值。
用于修改或限制提议的运动的函数。此函数接收输入 UDim2 并浮动 提出的 运动和返回一个 UDim2 和浮动的 修改的 或未修改的运动。它可以选择返回 Enum.UIDragDetectorDragRelativity 和 Enum.UIDragDetectorDragSpace 作为第三和第四个返回值作为输出替换值。
返回
使用此连接对象来移除约束函数。
GetReferencePosition
当没有设置 时,此函数返回拖动对象的直接父辈 位置(如果存在),或者拖动对象的 位置。
当 ReferenceUIInstance 设置时,该函数返回该引用实例的 UDim2 位置。
返回
GetReferenceRotation
当没有设置 ReferenceUIInstance 时,该函数返回拖动对象的直接父辈的旋转 GuiObject (如果存在),或者拖动对象的旋转。
当一个 ReferenceUIInstance 被设置时,该函数返回该引用实例的旋转。
返回
当前拖动的参考元素的旋转。
SetDragStyleFunction
传递一个函数,如果和仅如果 DragStyle 设置为 Enum.UIDragDetectorDragStyle.Scriptable 。给定的函数接收信号的屏幕空间输入位置类型 Vector2 ,并返回包含拖动所需运动的 UDim2 (位置) 和漂浮(旋转)的位置。返回值的空间和运动的相对性由 DragSpace 和 DragRelativity 属性决定,除非通过返回指定的 Enum.UIDragDetectorDragRelativity 和 Enum.UIDragDetectorDragSpace 作为第三和第四个返回值来覆盖。
如果函数返回 nil,对象不会移动。如果脚本尚未收集到需要提供正确答案的所有信息,或在暂时情况下,您希望对象留在原地,这很有用。
参数
监控DragContinue信号的函数。这个函数接收信号的屏幕空间输入位置,返回一个 UDim2 和浮动包含所需运动的拖动在所需空间和相对性的所需动作的位置。如果此函数返回 nil,对象不会移动。