UIDragDetector
Instance which facilitates and encourages interaction with UI elements in an experience.
Memory category | Instances |
---|
Member index 27
Description
The UIDragDetector
instance facilitates and encourages interaction with 2D
user interface elements in an experience, such as sliders and spinners. Key
features include:
Place a
UIDragDetector
under any GuiObject instance to make it draggable via all inputs without a single line of code.Choose from several DragStyle options, define how the object responds to motion via ResponseStyle, and optionally apply axis, movement limits, or drag boundaries.
Scripts can respond to manipulation of dragged objects to drive logic responses, such as adjusting settings.
UIDragDetectors
work in Studio as long as you're not using the Select, Move, Scale, or Rotate tools, nor certain plugins or Studio's UI editor tools.
History 32
- 650 Change Tags of UIDragDetector from [NotBrowsable] to []
- 645 Add UIDragSpeedAxisMapping
- 645 Add SelectionModeRotateSpeed
- 645 Add SelectionModeDragSpeed
- 645 Change ValueType of CursorIcon from Content to ContentId
- 645 Change ValueType of ActivatedCursorIcon from Content to ContentId
- 635 Add BoundingBehavior
- 631 Add CursorIcon
- 631 Add ActivatedCursorIcon
- 631 Change Tags of UIDragDetector from [] to [NotBrowsable]
- 629 Add DragStart
- 629 Add DragEnd
- 629 Add DragContinue
- 629 Add SetDragStyleFunction
- 629 Add GetReferenceRotation
- 629 Add GetReferencePosition
- 629 Add AddConstraintFunction
- 629 Add ResponseStyle
- 629 Add ReferenceUIInstance
- 629 Add MinDragTranslation
- 629 Add MinDragAngle
- 629 Add MaxDragTranslation
- 629 Add MaxDragAngle
- 629 Add Enabled
- 629 Add DragUDim2
- 629 Add DragStyle
- 629 Add DragSpace
- 629 Add DragRotation
- 629 Add DragRelativity
- 629 Add DragAxis
- 629 Add BoundingUI
- 629 Add UIDragDetector
Members 27
ActivatedCursorIcon
Type | Default | |
---|---|---|
ContentId |
Sets the cursor icon to display when the mouse is activated over the
parent of this UIDragDetector
. If this property is left blank, the
detector will use the default icon.
To change the activated cursor icon, set this property to the asset ID of the image you'd like to use.
Thread safety | ReadSafe |
---|---|
Category | Image |
Loaded/Saved | true |
History 2
- 645 Change ValueType of ActivatedCursorIcon from Content to ContentId
- 631 Add ActivatedCursorIcon
AddConstraintFunction
Parameters (2) | ||
---|---|---|
priority | int | |
function | Function | |
Returns (1) | ||
RBXScriptConnection |
Adds a function to modify or constrain proposed motion. The function takes
an input UDim2 (position) and float (rotation) of proposed
motion and returns a UDim2 and float of modified or
unmodified motion. You can add multiple functions which will be called in
order by priority
, passing the results along in a chain.
The input is expressed in the space defined by the DragSpace property, either as a delta or the final desired position/rotation based on the DragRelativity property. The output should be expressed in the same space and relativity, unless overridden by returning a specified UIDragDetectorDragRelativity and UIDragDetectorDragSpace as the third and fourth return values.
To remove an added constraint function, call Disconnect() on the returned connection object.
Thread safety | Unsafe |
---|
History 1
BoundingBehavior
Type | Default | |
---|---|---|
UIDragDetectorBoundingBehavior | Automatic |
Determines bounding behavior of the dragged UI object when the detector's BoundingUI is set. See UIDragDetectorBoundingBehavior for details on each setting's behavior.
Thread safety | ReadSafe |
---|---|
Category | Behavior |
Loaded/Saved | true |
History 1
- 635 Add BoundingBehavior
BoundingUI
Type | Default | |
---|---|---|
GuiBase2d |
When set, the UIDragDetector
instance will not allow the bounds of the
parent GuiObject to be dragged outside the bounds of the
BoundingUI instance.
Note that if a portion of the parent GuiObject is outside the BoundingUI bounds, the initial input position at drag start and its relative position during drag will be used for bounding detection until the entirety of the dragged object is within the bounds, after which the object will be constrained inside the bounds.
Thread safety | ReadSafe |
---|---|
Category | Behavior |
Loaded/Saved | true |
History 1
- 629 Add BoundingUI
CursorIcon
Type | Default | |
---|---|---|
ContentId |
Sets the cursor icon to display when the mouse is hovered over the parent
of this UIDragDetector
. If this property is left blank, the detector
will use the default icon.
To change the cursor icon, set this property to the asset ID of the image you'd like to use.
Thread safety | ReadSafe |
---|---|
Category | Image |
Loaded/Saved | true |
History 2
- 645 Change ValueType of CursorIcon from Content to ContentId
- 631 Add CursorIcon
DragAxis
Type | Default | |
---|---|---|
Vector2 | 1, 0 |
Vector2 value that defines the axis of movement for the dragged
object when DragStyle is set to
UIDragDetectorDragStyle.TranslateLine. The axis is defined in the
local space of the UIDragDetector
unless
ReferenceUIInstance is defined,
in which case the axis is defined in that instance's local space.
Thread safety | ReadSafe |
---|---|
Category | Drag Directions |
Loaded/Saved | true |
DragContinue
Parameters (1) | |
---|---|
inputPosition | Vector2 |
Fires when a user continues dragging the UI element after DragStart has been initiated.
Thread safety | Unsafe |
---|
History 1
- 629 Add DragContinue
DragEnd
Parameters (1) | |
---|---|
inputPosition | Vector2 |
Fires when a user stops dragging the UI element.
Thread safety | Unsafe |
---|
DragRelativity
Type | Default | |
---|---|---|
UIDragDetectorDragRelativity | Absolute |
Only applies if a custom drag function is registered through SetDragStyleFunction() or AddConstraintFunction(). Sets the paradigm which defines the relativity of the registered function's inputs/outputs.
For example, returning a UDim2.fromOffset(1, 0) from a
registered function with this property set to
UIDragDetectorDragRelativity.Absolute will move the detector's
parent to (1, 0)
in the designated
DragSpace, while returning the same
UDim2 with this property set to
UIDragDetectorDragRelativity.Relative will move the detector's
parent by (1, 0)
in the designated
DragSpace.
Thread safety | ReadSafe |
---|---|
Category | Behavior |
Loaded/Saved | true |
History 1
- 629 Add DragRelativity
DragRotation
Type | Default | |
---|---|---|
float | 0 |
The rotation performed by the current drag. This value is defined in
degrees relative to the local space of the UIDragDetector
unless
ReferenceUIInstance is defined,
in which case the rotation is defined in the local space of that instance
and from its positive X axis.
This property can be changed while there is no active drag to rotate the dragged object.
Thread safety | ReadSafe |
---|---|
Category | Dragged Amount |
Loaded/Saved | true |
History 1
- 629 Add DragRotation
DragSpace
Type | Default | |
---|---|---|
UIDragDetectorDragSpace | Parent |
Only applies if a custom drag function is registered through SetDragStyleFunction() or AddConstraintFunction(). Sets the paradigm which defines the space of the registered function's inputs/outputs.
For example, if the detector's parent GuiObject is a child of a parent GuiObject that's rotated:
Returning a UDim2.fromOffset(1, 0) from a registered function with this property set to UIDragDetectorDragSpace.Parent will move the detector's parent GuiObject to the right by 1 pixel in the local space affected by its parent's rotation.
Returning a UDim2.fromOffset(1, 0) from a registered function with this property set to UIDragDetectorDragSpace.LayerCollector will move the detector's parent GuiObject to the right by 1 pixel in the space of the LayerCollector.
Thread safety | ReadSafe |
---|---|
Category | Behavior |
Loaded/Saved | true |
DragStart
Parameters (1) | |
---|---|
inputPosition | Vector2 |
Fires when a user starts dragging the UI element.
Thread safety | Unsafe |
---|
DragStyle
Type | Default | |
---|---|---|
UIDragDetectorDragStyle | TranslatePlane |
The paradigm used to generate proposed motion, given a stream of input position vectors. See UIDragDetectorDragStyle for options.
Thread safety | ReadSafe |
---|---|
Category | Behavior |
Loaded/Saved | true |
DragUDim2
Type | Default | |
---|---|---|
UDim2 | {0, 0}, {0, 0} |
The translation performed by the current drag expressed in a UDim2 value. Translation is done through Offset or Scale value changes depending on the DragRelativity value, and it is relative to the detector's local space unless a ReferenceUIInstance is defined.
This property can be changed while there is no active drag to move the dragged object.
Thread safety | ReadSafe |
---|---|
Category | Dragged Amount |
Loaded/Saved | true |
Enabled
Type | Default | |
---|---|---|
bool | true |
If true
, the UIDragDetector
responds to user input; if false
, it
does not.
Thread safety | ReadSafe |
---|---|
Category | Behavior |
Loaded/Saved | true |
GetReferencePosition
Parameters (0) | ||
---|---|---|
No parameters. | ||
Returns (1) | ||
UDim2 |
When no ReferenceUIInstance is set, this function returns the UDim2 position of the dragged object's immediate parent GuiObject (if one exists), or else the UDim2 position of the dragged object.
When a ReferenceUIInstance is set, this function returns the UDim2 position of that reference instance.
Thread safety | Unsafe |
---|
History 1
GetReferenceRotation
Parameters (0) | ||
---|---|---|
No parameters. | ||
Returns (1) | ||
float |
When no ReferenceUIInstance is set, this function returns the rotation of the dragged object's immediate parent GuiObject (if one exists), or else the rotation of the dragged object.
When a ReferenceUIInstance is set, this function returns the rotation of that reference instance.
Thread safety | Unsafe |
---|
History 1
MaxDragAngle
Type | Default | |
---|---|---|
float | 0 |
If this property is greater than MinDragAngle, rotation will be clamped within the range of MinDragAngle and MaxDragAngle. Positive values impede clockwise rotation while negative values impede counterclockwise rotation.
This is not a constraint; it merely impedes the detector's attempts to generate motion in order to remain within limits. See AddConstraintFunction() to add custom constraint to a drag.
Only relevant if DragStyle is UIDragDetectorDragStyle.Rotate.
Thread safety | ReadSafe |
---|---|
Category | Drag Limits |
Loaded/Saved | true |
History 1
- 629 Add MaxDragAngle
MaxDragTranslation
Type | Default | |
---|---|---|
UDim2 | {0, 0}, {0, 0} |
If the corresponding Offset and/or Scale values are greater than those of MinDragTranslation in all dimensions, linear/planar translation will be clamped within the range of MinDragTranslation and MaxDragTranslation.
This is not a constraint; it merely impedes the detector's attempts to generate motion in order to remain within limits. See AddConstraintFunction() to add custom constraint to a drag.
Only relevant if DragStyle is UIDragDetectorDragStyle.TranslateLine or UIDragDetectorDragStyle.TranslatePlane.
Thread safety | ReadSafe |
---|---|
Category | Drag Limits |
Loaded/Saved | true |
History 1
MinDragAngle
Type | Default | |
---|---|---|
float | 0 |
If this property is less than MaxDragAngle, rotation will be clamped within the range of MinDragAngle and MaxDragAngle. Positive values impede clockwise rotation while negative values impede counterclockwise rotation.
This is not a constraint; it merely impedes the detector's attempts to generate motion in order to remain within limits. See AddConstraintFunction() to add custom constraint to a drag.
Only relevant if DragStyle is UIDragDetectorDragStyle.Rotate.
Thread safety | ReadSafe |
---|---|
Category | Drag Limits |
Loaded/Saved | true |
History 1
- 629 Add MinDragAngle
MinDragTranslation
Type | Default | |
---|---|---|
UDim2 | {0, 0}, {0, 0} |
If the corresponding Offset and/or Scale values are less than those of MaxDragTranslation in all dimensions, linear/planar translation will be clamped within the range of MinDragTranslation and MaxDragTranslation.
This is not a constraint; it merely impedes the detector's attempts to generate motion in order to remain within limits. See AddConstraintFunction() to add custom constraint to a drag.
Only relevant if DragStyle is UIDragDetectorDragStyle.TranslateLine or UIDragDetectorDragStyle.TranslatePlane.
Thread safety | ReadSafe |
---|---|
Category | Drag Limits |
Loaded/Saved | true |
History 1
ReferenceUIInstance
Type | Default | |
---|---|---|
GuiObject |
A GuiObject instance whose local space and absolute center position is the reference space and origin for the detector. Setting this reference affects properties such as DragUDim2, DragRotation, and the behavior of DragAxis.
Thread safety | ReadSafe |
---|---|
Category | Behavior |
Loaded/Saved | true |
History 1
ResponseStyle
Type | Default | |
---|---|---|
UIDragDetectorResponseStyle | Offset |
Once the proposed motion has been computed and potentially constrained,
this paradigm is used to deterimine how to move (or not move) the
GuiObject affected by the UIDragDetector
. See
UIDragDetectorResponseStyle for options.
Thread safety | ReadSafe |
---|---|
Category | Behavior |
Loaded/Saved | true |
History 1
- 629 Add ResponseStyle
SelectionModeDragSpeed
Type | Default | |
---|---|---|
UDim2 | {0, 300}, {0, 300} |
Defines the maximum drag speed for translation as a combination of
Scale and Offset of the first
ancestor ScreenGui or SurfaceGui the UIDragDetector
belongs to. This value must be positive and any value below 0
will be
clamped to 0
.
Thread safety | ReadSafe |
---|---|
Category | Behavior |
Loaded/Saved | true |
History 1
SelectionModeRotateSpeed
Type | Default | |
---|---|---|
float | 90 |
Defines the maximum angle per second at which the UIDragDetector
can
rotate. This value must be positive and any value below 0
will be
clamped to 0
.
Thread safety | ReadSafe |
---|---|
Category | Behavior |
Loaded/Saved | true |
History 1
SetDragStyleFunction
Parameters (1) | ||
---|---|---|
function | Function | |
Returns (1) | ||
null |
Passes a function to be used if and only if DragStyle is set to UIDragDetectorDragStyle.Scriptable. The given function receives the signal's screen space input position with type Vector2, and it returns a UDim2 (position) and float (rotation) containing the desired motion of the drag. The space of the return values and the relativity of the motion are determined by the DragSpace and DragRelativity properties, unless overriden by returning a specified UIDragDetectorDragRelativity and UIDragDetectorDragSpace as the third and fourth return values.
If the function returns nil
, the object will not be moved. This is
useful if the script has not yet collected all the information it needs to
give the correct answer, or in temporary cases where you want the object
to stay where it is.
Thread safety | Unsafe |
---|
History 1
UIDragSpeedAxisMapping
Type | Default | |
---|---|---|
UIDragSpeedAxisMapping | XY |
UIDragSpeedAxisMapping value that determines the X/Y dimension dragging speeds.
Thread safety | ReadSafe |
---|---|
Category | Behavior |
Loaded/Saved | true |