UIDragDetector 實例可以幫助和鼓勵在體驗中與 2D 用戶界面元素進行互動,例如滑塊和旋轉器。關鍵功能包括:
在任何 GuiObject 實例下放置 UIDragDetector 來使其可以通過所有輸入拖曳而不需要單條代碼。
從多個 DragStyle 選項中選擇,定義對象如何通過 ResponseStyle 回應運動,並可選擇應用軸、移動限制或拖動邊界。
腳本可以回應拖曳對象的操作來驅動邏輯回應,例如調整設置。
在工作室工作,只要你不使用選擇、移動、縮放或旋轉工具,或某些插件或工作室的編輯器工具。
概要
屬性
將鼠標指示符設為在此 UIDragDetector 的父處激活時顯示的圖示。
當偵測器的 BoundingUI 被設設定時,決定拖曳的 UI 對象的邊界行為。
其綁定區域定義了父 GuiObject 的拖動邊界。
將鼠標懸停在此 UIDragDetector 的父處時顯示曲標圖示。
當 設為 時,拖動軸對 實例會設為 。
設置定義輸入/輸出相對性的模型,該模型來自自訂拖動功能。
目前拖動所執行的旋轉。
設置定義從自訂拖動功能輸入/輸出空間的範式。
用於生成建議動作的方法。
目前拖動所表達的翻譯值 UDim2 值。
無論 UIDragDetector 是否回應使用者輸入。
與 MinDragAngle 一起,阻止偵測器嘗試產生旋轉運動。
與 MinDragTranslation 一起,阻止偵測器嘗試生成線圈/平面運動。
與 MaxDragAngle 一起,阻止偵測器嘗試產生旋轉運動。
與 MaxDragTranslation 一起,阻止偵測器嘗試生成線圈/平面運動。
一個 GuiObject 實例,其本地空間和絕對中心位置是偵測器的參考空間和起源。
用於定義提出動作的回應的方法論。
翻譯的最大拖動速度。
每秒最大角度 UIDragDetector 可以旋轉。
Enum.UIDragSpeedAxisMapping 值,決定了 X / Y 維度拖動速度。
方法
添加一個功能來修改或限制提出的動作。
返回目前拖動的參考起源的參考位置 UDim2 。
返回目前拖動的參考元素的參考旋轉。
傳送一個函數,如果和只有當 DragStyle 設為 Enum.UIDragDetectorDragStyle.Scriptable 時才使用。
活動
當使用者繼續拖曳介面元素後 DragStart 已啟動時,發生火災。
當使用者停止拖動 UI 元素時發生火災。
當使用者開始拖動介面元素時發生火災。
屬性
ActivatedCursorIcon
將鼠標指示符設為在此 UIDragDetector 的父處激活時顯示的圖示。如果此屬性為空白,偵測器將使用預設圖示。
若要變更啟用的鼠標圖示,將此屬性設為你想使用的圖像的資產ID。
BoundingBehavior
當偵測器的 BoundingUI 被設置時,決定拖曳到的使用者介面對象的邊界行為。請參閱 Enum.UIDragDetectorBoundingBehavior 每個設定的行為細節。
BoundingUI
當設定時, UIDragDetector 實例將不允許將父GuiObject 的邊界拖出 BoundingUI 實個體、實例的邊界。
請注意,如果父 GuiObject 的一部分超出了 BoundingUI 的範圍,拖動開始時的初始輸入位置和拖動期間的相對位置將被用於綁定偵測直到整個拖動對象都在範圍內,之後對象將被限制在範圍內。
CursorIcon
將鼠標懸停在此 UIDragDetector 的父處時顯示曲標圖示。如果此屬性為空白,偵測器將使用預設圖示。
若要變更指標圖示,將此屬性設為你想使用的圖像的資產ID。
DragAxis
Vector2 值,定義拖動對象的移動軸當 DragStyle 設為 Enum.UIDragDetectorDragStyle.TranslateLine 時。軸在 未定義,否則軸將在該實例的本地空間中定義,在那種情況下,軸將在該實個體、實例的本地空間中定義。
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
一旦提出的動作已計算並可能受到限制,這種方法將用於確定如何移動(或不移動工具)受到 GuiObject 影響的 UIDragDetector 。請參閱 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,對象不會被移動。