UIDragDetector
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
ตัวอย่าง UIDragDetector ช่วยให้การโต้ตอบและส่งเสริมการโต้ตอบกับองค์ประกอบอินเทอร์เฟซผู้ใช้ 2D ในประสบการณ์ เช่น สไลเดอร์และสปินเนอร์คุณสมบัติสําคัญรวมถึง:
วาง UIDragDetector ภายใต้ตัวอย่างใดๆ GuiObject รหัส
เลือกจากตัวเลือกหลาย DragStyle ตัว กำหนดวิธีที่วัตถุตอบสนองต่อการเคลื่อนไหวผ่าน ResponseStyle และใช้ตัวเลือกเพิ่มเติมเช่นเพลา ขีดจํากัดการเคลื่อนที่ หรือขอบเขตการลาก
สคริปต์สามารถตอบสนองต่อการควบคุมวัตถุที่ลากไปเพื่อขับเคลื่อนการตอบสนองตามเหตุผล เช่น ปรับการตั้งค่า
ทำงานในสตูดิโอตราบใดที่คุณ ไม่ใช้ เครื่องมือ เลือก , ย้าย , ขนาด หรือ หมุน เครื่องมือ หรือไม่ใช้ปลั๊กอินหรือเครื่องมือเรดเดอร์ของสตูดิโอบางอย่าง หรือไม่ใช้เครื่องมือเรดเดอร์ UI ของเอดิเตอร์บางอย่าง
สรุป
คุณสมบัติ
ตั้งไอคอนเคอร์เซอร์ให้แสดงเมื่อเมาส์ถูกเปิดใช้งานบนพ่อของนี้ UIDragDetector
กำหนดพฤติกรรมการผูกของวัตถุ UI ที่ลากเมื่อตัวตรวจจับ BoundingUI ถูกตั้งค่า
ตัวอย่างที่พื้นที่ผูกขัดกำหนดขอบเขตการลากสําหรับพ่อ 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
กำหนดพฤติกรรมการผูกของวัตถุ UI ที่ลากเมื่อตัวตรวจจับ BoundingUI ถูกตั้งค่า ดู Enum.UIDragDetectorBoundingBehavior สำหรับรายละเอียดเกี่ยวกับพฤติกรรมของแต่ละการตั้งค่า
BoundingUI
เมื่อตั้งค่าแล้ว ตัวอย่าง UIDragDetector จะไม่อนุญาตให้ขอบเขตของผู้ปกครอง GuiObject อินสแตนซ์ BoundingUI โปรดทราบว่าหากส่วนหนึ่งของผู้ปกครอง GuiObject อยู่นอกขอบเขตของ BoundingUI ตำแหน่งการป้อนเริ่มแรกและตำแหน่งที่เกี่ยวข้องในระหว่างการลากจะถูกใช้สำหรับการตรวจจับการผูกจนกว่าทั้งหมดของวัตถุที่ลากจะอยู่ภายในขอบเขตหลังจากนั้นวัตถุจะถูกจำกัดภายในขอบเขต
CursorIcon
ตั้งไอคอนเคอร์เซอร์ให้แสดงเมื่อเมาส์เลื่อนเหนือพ่อของนี้ UIDragDetectorหากคุณสมบัตินี้ว่างเปล่า เครื่องตรวจจะใช้ไอคอนเริ่มต้น
เพื่อเปลี่ยนไอคอนเคอร์เซอร์ ตั้งค่าคุณสมบัตินี้เป็นรหัสทรัพย์สินของภาพที่คุณต้องการใช้
DragAxis
Vector2 ค่าที่กำหนดเส้นทางการเคลื่อนที่สำหรับวัตถุที่ลากมาเมื่อ DragStyle ถูกตั้งค่าเป็น Enum.UIDragDetectorDragStyle.TranslateLineแกนจะกำหนดในพื้นที่ท้องถิ่นของ UIDragDetector เว้นแต่ ReferenceUIInstance จะกำหนดไว้ อินสแตนซ์
DragRelativity
ใช้ได้เฉพาะถ้าฟังก์ชันลากที่กําหนดเองลงทะเบียนผ่าน SetDragStyleFunction() หรือ AddConstraintFunction()ตั้งพาราดิเมียที่กำหนดความสัมพันธ์ของอินพุต/เอาต์พุตของฟังก์ชันที่ลงทะเบียนไว้
ตัวอย่างเช่นการส่งคืน UDim2.fromOffset(1, 0) จากฟังก์ชันที่ลงทะเบียนด้วยคุณสมบัตินี้กำหนดเป็น Enum.UIDragDetectorDragRelativity.Absolute จะย้ายผู้ปกครองของเครื่องตรวจจับไปยัง **** ในสถานที่ที่กำหนด (1, 0) ในขณะที่ส่งคืนเดียวกันกับคุณสมบัตินี้กำหนดเป็น DragSpace ในสถานที่ที่กำหนด UDim2 จะย้ายผู้ปกครองของเครื่องตรวจจับไปยัง Enum.UIDragDetectorDragRelativity.Relative ในสถานที่ที่กำหนด **** ในสถานที่ที่กำหนด (1, 0) ในสถานที่ที่กำหนด DragSpace
DragRotation
การหมุนที่ดำเนินการโดยการลากปัจจุบันค่านี้กำหนดไว้ในองศาเมื่อเทียบกับพื้นที่ท้องถิ่นของ UIDragDetector ยกเว้น ReferenceUIInstance ถูกกำหนด ในกรณีนั้นการหมุนจะกำหนดในพื้นที่ท้องถิ่นของตัวอย่างนั้นและจากแกนเชิงบวก X คุณสมบัตินี้สามารถเปลี่ยนแปลงได้โดยไม่มีการลากที่ใช้งานเพื่อหมุนวัตถุที่ลาก
DragSpace
ใช้ได้เฉพาะถ้าฟังก์ชันลากที่กําหนดเองลงทะเบียนผ่าน SetDragStyleFunction() หรือ AddConstraintFunction()ตั้งพาราดิมที่กำหนดพื้นที่ของอินพุต/เอาต์พุตของฟังก์ชันที่ลงทะเบียนไว้
ตัวอย่างเช่น หากพ่อของเครื่องตรวจจับ GuiObject เป็นลูกของพ่อ GuiObject ที่หมุนแล้ว:
การส่งคืน จากฟังก์ชันที่ลงทะเบียนด้วยคุณสมบัตินี้ตั้งค่าเป็น จะย้ายผู้ปกครองของตัวตรวจจับไปทางขวาโดย 1 พิกเซลในพื้นที่ท้องถิ่นที่ได้รับผลกระทบจากการหมุนของพ่อแม่ของมัน
การส่งคืน จากฟังก์ชันที่ลงทะเบียนด้วยคุณสมบัตินี้ตั้งค่าเป็น จะย้ายผู้ปกครองของตัวตรวจจับไปทางขวาโดย 1 พิกเซลในพื้นที่ของ
DragStyle
รูปแบบที่ใช้ในการสร้างการเคลื่อนไหวที่เสนอโดยให้มีสตรีมของเวกเตอร์ตำแหน่งอินพุต ดู Enum.UIDragDetectorDragStyle สำหรับตัวเลือก
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
SelectionModeRotateSpeed
กำหนดมุมสูงสุดต่อวินาทีที่ UIDragDetector สามารถหมุนได้ค่านี้ต้องเป็นบวกและค่าใดๆ ที่ต่ำกว่า 0 จะถูกขัดขวางเป็น 0
วิธีการ
AddConstraintFunction
เพิ่มฟังก์ชันเพื่อแก้ไขหรือจำกัดการเคลื่อนไหวที่เสนอฟังก์ชันใช้การใส่ (ตำแหน่ง) และลอย (การหมุน) ของ ที่เสนอ ความเคลื่อนไหวและส่งคืน และลอยของ ความเคลื่อนไหวที่แก้ไขหรือไม่ได้แก้ไขคุณสามารถเพิ่มฟังก์ชันหลายอย่างซึ่งจะถูกเรียกตามลําดับโดย priority โดยส่งผลลัพธ์ไปตามลําดับในลูกโซ่
การใส่ข้อมูลจะถูกแสดงในพื้นที่ที่กำหนดโดยคุณสมบัติ DragSpace เป็นเดลต้าหรือตำแหน่ง/การหมุนที่ต้องการสุดท้ายตามคุณสมบัติ DragRelativityผลผลิตควรแสดงในพื้นที่และความสัมพันธ์เดียวกัน ยกเว้นถูกแทนที่โดยการส่งค่ากลับที่กำหนด Enum.UIDragDetectorDragRelativity และ Enum.UIDragDetectorDragSpace เป็นค่าการคืนที่สามและที่สี่
เพื่อลบฟังก์ชันข้อจํากัดที่เพิ่มเข้ามา โทร Disconnect() ที่วัตถุเชื่อมต่อที่คืนกลับ
พารามิเตอร์
ลําดับความสําคัญสําหรับฟังก์ชันที่เพิ่มผ่านวิธีนี้ ค่าที่สูงกว่ามีลําดับความสําคัญสูงกว่าค่าที่ต่ํากว่า
ฟังก์ชันสำหรับการแก้ไขหรือจำกัดการเคลื่อนไหวที่เสนอฟังก์ชันนี้รับอินพุต UDim2 และลอยของ เสนอ ความเคลื่อนไหวและส่งคืน UDim2 และลอยของ แก้ไข หรือไม่ได้แก้ไขความเคลื่อนไหวมันสามารถส่งคืนได้ตามต้องการ Enum.UIDragDetectorDragRelativity และ Enum.UIDragDetectorDragSpace เป็นค่าการคืนค่าที่สามและที่สี่ในฐานะการแทนที่การออกผล
ส่งค่ากลับ
ใช้วัตถุการเชื่อมต่อนี้เพื่อลบฟังก์ชันข้อจำกัด
GetReferencePosition
เมื่อไม่มี ReferenceUIInstance ถูกตั้งค่าไว้ ฟังก์ชันนี้จะคืนตำแหน่ง UDim2 ของบรรพบุรุษทันทีของวัตถุที่ลากไป GuiObject (ถ้ามี) หรือตำแหน่ง UDim2 ของวัตถุที่ลากไป
เมื่อตั้งค่า ReferenceUIInstance แล้วฟังก์ชันนี้จะคืนตำแหน่ง UDim2 อินสแตนซ์
ส่งค่ากลับ
GetReferenceRotation
เมื่อไม่มี ReferenceUIInstance ถูกตั้งค่าไว้ ฟังก์ชันนี้จะคืนการหมุนของพ่อลูกโดยตรงของวัตถุที่ลากไป GuiObject (ถ้ามี) หรือการหมุนของวัตถุที่ลากไป
เมื่อตั้งค่า ReferenceUIInstance แล้ว อินสแตนซ์
ส่งค่ากลับ
การหมุนองค์ประกอบอ้างอิงของการลากปัจจุบัน
SetDragStyleFunction
ส่งฟังก์ชันที่จะใช้หากและเฉพาะหาก DragStyle ถูกตั้งค่าเป็น Enum.UIDragDetectorDragStyle.Scriptableฟังก์ชันที่กำหนดได้รับตำแหน่งพื้นที่หน้าจอสัญญาณด้วยประเภท Vector2 และส่งคืนตำแหน่ง UDim2 (ตำแหน่ง) และลอยตัว (การหมุน) ที่มีการเคลื่อนไหวที่ต้องการของการลากพื้นที่ของค่ากลับและความเร็วในการเคลื่อนที่จะถูกกำหนดโดยคุณสมบัติ และ ยกเว้นถ้าถูกแทนที่ด้วยการส่งค่ากลับที่กำหนดไว้เป็นค่ากลับที่สามและสี่
หากฟังก์ชัน返回值 nil วัตถุจะไม่ถูกย้ายนี่มีประโยชน์หากสคริปต์ยังไม่ได้รวบรวมข้อมูลทั้งหมดที่ต้องการให้ได้คำตอบที่ถูกต้อง หรือในกรณีชั่วคราวที่คุณต้องการให้วัตถุอยู่ที่เดิม
พารามิเตอร์
ฟังก์ชันสำหรับการตรวจสอบสัญญาณ DragContinueฟังก์ชันนี้ได้รับตำแหน่งการรับส่งพื้นที่หน้าจอของสัญญาณและส่งคืน UDim2 และลอยตัวที่มีการเคลื่อนไหวที่ต้องการของการลากในพื้นที่และความเร็วแสงที่ต้องการหากฟังก์ชันนี้返回 nil วัตถุจะไม่ถูกย้าย
ส่งค่ากลับ
อีเวนต์
DragContinue
เกิดไฟไหม้เมื่อผู้ใช้ดึงองค์ประกอบ UI ต่อไปหลังจากที่ DragStart ได้รับการเริ่มต้นแล้ว
พารามิเตอร์
DragEnd
เกิดไฟไหม้เมื่อผู้ใช้หยุดลากองค์ประกอบ UI