GuiObject
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
GuiObject เป็นคลาสที่มีเอกลักษณ์ (มากเหมือน Class.BasePart
เพื่อจัดการการจัดเรียงของวัตถุ GUI ในวิธีพิเศษคุณสามารถใช้โครงสร้างการจัดเรียงเช่น list/flex หรือ grid และคุณสามารถสไตล์พวกเขาได้นอกเหนือจากคุณสมบัติหลักของพวกเขาผ่าน
แม้ว่าจะเป็นไปได้ที่จะตรวจจับเหตุการณ์ปุ่มเมาส์บน GUI ใด ๆ โดยใช้ InputBegan และ Class.GuiObject.InputEnd
สรุป
คุณสมบัติ
กำหนดว่ารูปแบบนี้สามารถรับข้อมูลการป้อนของผู้ใช้ได้หรือไม่
กำหนดจุดเริ่มต้นของ GuiObject สัมพันธ์กับขนาดอันตามตัวเลข
กำหนดว่าจะมีการปรับขนาดหรือไม่ขึ้นอยู่กับเนื้อหาของลูก
กำหนดสีพื้นหลัง GuiObject
กำหนดความโปร่งใสของพื้นหลังและขอบเขตของ GuiObject
กำหนดสีของขอบ GuiObject
กำหนดวิธีการที่ GuiObject ขอบเขตถูกวางโดยเฉลี่ยกับขนาดของมัน
กำหนดความกว้างของพิกเซลของ GuiObject รอบ
กำหนดว่าควรเรนเดอร์หรือไม่ GuiObjects ภายนอกขอบเขตของรูปปั้น GUI ระดับพ่อของคุณ
กำหนดว่าผู้เล่นกดเมาส์บน GuiObject หรือไม่
กำหนดว่า GuiButton สามารถใช้งานได้หรือไม่ หรือว่า GuiState ของ GuiObject กําลังเปลี่ยนแปลงหรือไม่
ควบคุมลำดับการเรียงลำดับของ GuiObject เมื่อใช้กับ UIGridStyleLayout
ตั้งค่า GuiObject ซึ่งจะได้รับการเลือกเมื่อเครื่องยนต์ผู้ควบคุมเลื่อนลง
ตั้งค่า GuiObject ซึ่งจะถูกเลือกเมื่อเครื่องยนต์เลื่อนซ้าย
ตั้งค่า GuiObject ซึ่งจะถูกเลือกเมื่อเครื่องยนต์เลื่อนไปทางขวา
ตั้งค่า GuiObject ซึ่งจะถูกเลือกเมื่อเครื่องยนต์เลื่อนขึ้น
กำหนดตำแหน่งพิกเซลและตำแหน่งเศษเส้นของ GuiObject
กำหนดจำนวนองศาที่ GuiObject หมุน
กำหนดว่า GUI สามารถเลือกได้โดย gamepad หรือไม่
เปลี่ยนแปลงการตกแต่งการเลือกที่ใช้สำหรับแพดพันเกม
ลำดับของ GuiObjects ที่เลือกโดย UI เกมแพด.
กำหนดขนาดพิกเซลและขนาดพิกเซลของ GuiObject
ตั้งค่า Size แกนที่ Class.GuiObject จะสร้างบน, สัมพันธ์กับขนาดของพ่อของมัน.
สมบัติสัมพันธ์ผสมของ BackgroundTransparency และ TextTransparency
กำหนดว่า GuiObject และบุตรหลานของมันจะถูกเรนเดอร์หรือไม่
กำหนดลำดับที่เรนเดอร์ GuiObject เมื่อเป็นคู่กับคนอื่น
อธิบายตำแหน่งหน้าจอที่เป็นไปเลยของรายการ UI ในพิกเซล
อธิบายการหมุนเวียนหน้าจริงของ UI โดยองศา
อธิบายขนาดหน้าจอที่เป็นไปจริงของรายการ UI
เมื่อตั้งค่าเป็น true จะใช้การแปลภาษาใน GuiBase2d และลูกหลานของมัน
การอ้างอิงถึง LocalizationTable ที่จะใช้ในการประยุกต์การแปลอัตโนมัติสู่ GuiBase2d และลูกหลานของมัน
ปรับแต่งพฤติกรรมการเลือกแพดพักในแนวลง
ปรับแต่งพฤติกรรมการเลือกแพดพานเกมในแนวโน้มทางซ้าย
ปรับแต่งพฤติกรรมการเลือกแพดพักเกมในทิศทางที่ถูกต้อง
ปรับแต่งพฤติกรรมการเลือกแพดพักในแนวตั้งขึ้น
ช่วยให้คุณสามารถปรับแต่งการเคลื่อนไหวของแผงควบคุมเกม
วิธีการ
- TweenPosition(endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
ย้าย GUI ไปยัง Datatype.UDim2 ใหม่อย่างราบรื่น
- TweenSize(endSize : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
ปรับขนาด GUI ให้เล็กลงเป็น UDim2 ใหม่
- TweenSizeAndPosition(endSize : UDim2,endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
ย้าย GUI ไปยังขนาดและตำแหน่งใหม่อย่างราบรื่น
อีเวนต์
เกิดขึ้นเมื่อผู้ใช้เริ่มต้นใช้งานผ่านอุปกรณ์ระหว่างมนุษย์-คอมพิวเตอร์ (ปุ่มเมาส์ลง, แตะเริ่ม, ปุ่มคีย์บอร์ดลง, ฯลฯ)
ไฟร์เมื่อผู้ใช้เปลี่ยนวิธีการโต้ตอบผ่านอุปกรณ์ระหว่างมนุษย์-คอมพิวเตอร์ (ปุ่มเมาส์ลง, แตะเริ่ม, ปุ่มกล้อง, ฯลฯ)
ไฟร์เมื่อผู้ใช้หยุดใช้งานผ่านอุปกรณ์ระหว่างมนุษย์-คอมพิวเตอร์ (ปุ่มเมาส์ลง, แตะเริ่ม, ปุ่มคีย์บอร์ดลง, ฯลฯ)
จะเกิดขึ้นเมื่อผู้ใช้ย้ายเมาส์ไปที่องค์ประกอบ GUI
จะเกิดขึ้นเมื่อผู้ใช้ย้ายเมาส์ออกจากส่วน GUI
การเพิ่มเติมเมื่อผู้ใช้เคลื่อนเมาส์ไปยัง GUI เมื่ออยู่ภายในส่วนหนึ่งของ GUI
จะเกิดขึ้นเมื่อผู้ใช้เลื่อนเมาส์กลับเมื่อเมาส์อยู่เหนือ GUI เอเจนต์
จะเกิดขึ้นเมื่อผู้ใช้เลื่อนเมาส์ไปข้างหน้าเมื่อเมาส์อยู่เหนือรายการ GUI
จุดเกิดเหตุเมื่อ GuiObject ได้รับการโฟกัสด้วย Gamepad ตัวเลือก
ไฟร์เมื่อ Gamepad เลือกเปลี่ยนโฟกัสไปที่ GuiObject
เกิดขึ้นเมื่อผู้เล่นเริ่มต้น ดำเนินการต่อและหยุดการกด UI เป็นเวลานาน
- TouchPan(touchPositions : Array,totalTranslation : Vector2,velocity : Vector2,state : Enum.UserInputState):RBXScriptSignal
เกิดขึ้นเมื่อผู้เล่นยกนิ้วของพวกเขาบนองค์ประกอบ UI
- TouchPinch(touchPositions : Array,scale : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
เปิดเมื่อผู้เล่นทำการเลื่อนหรือดึงด้วยนิ้วสองนิ้วบน UI
- TouchRotate(touchPositions : Array,rotation : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
เกิดขึ้นเมื่อผู้เล่นทำการหมุนโดยใช้นิ้วสองนิ้วบนรูปปั้น
เกิดขึ้นเมื่อผู้เล่นทำการเลื่อนสไนเปอร์บนองค์ประกอบ UI
เกิดขึ้นเมื่อผู้เล่นทำการเลื่อนสายตาในส่วน UI
- SelectionChanged(amISelected : bool,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
เกิดขึ้นเมื่อเลือกแผงควบคุมเกมเคลื่อนไปยัง, ออกหรือเปลี่ยนแปลงใน GuiBase2d หรือ GuiObjects ต้นได้
คุณสมบัติ
Active
สมบัตินี้กำหนดว่าจะมีการจมการป้อนข้อมูลในพื้นที่ 3D หรือไม่ โดยใช้ตัวอย่างเช่น โมเดลพื้นฐานที่มี <a href="https://www.class.ui-kit.com/class-ui-kit/">Class.ClickDetector\ คล
สำหรับวัตถุ GuiButton (ImageButton และ <
ตัวอย่างโค้ด
-- Place this LocalScript within a TextButton (or ImageButton)
local textButton = script.Parent
textButton.Text = "Click me"
textButton.Active = true
local function onActivated()
-- This acts like a debounce
textButton.Active = false
-- Count backwards from 5
for i = 5, 1, -1 do
textButton.Text = "Time: " .. i
task.wait(1)
end
textButton.Text = "Click me"
textButton.Active = true
end
textButton.Activated:Connect(onActivated)
AnchorPoint
ลักษณะลูกศรีลัง AnchorPoint กำหนดจุดเริ่มต้นของ GuiObject โดยเฉลี่ยขนาดของมัน ลักษณะลูกศริลัง GuiObject.Position กำหนดจากที่ที่ตำแหน่งองค์ประกอบถู
ดู ที่นี่ สำหรับภาพประกอบและรายละเอียด
ตัวอย่างโค้ด
local guiObject = script.Parent
while true do
-- Top-left
guiObject.AnchorPoint = Vector2.new(0, 0)
guiObject.Position = UDim2.new(0, 0, 0, 0)
task.wait(1)
-- Top
guiObject.AnchorPoint = Vector2.new(0.5, 0)
guiObject.Position = UDim2.new(0.5, 0, 0, 0)
task.wait(1)
-- Top-right
guiObject.AnchorPoint = Vector2.new(1, 0)
guiObject.Position = UDim2.new(1, 0, 0, 0)
task.wait(1)
-- Left
guiObject.AnchorPoint = Vector2.new(0, 0.5)
guiObject.Position = UDim2.new(0, 0, 0.5, 0)
task.wait(1)
-- Dead center
guiObject.AnchorPoint = Vector2.new(0.5, 0.5)
guiObject.Position = UDim2.new(0.5, 0, 0.5, 0)
task.wait(1)
-- Right
guiObject.AnchorPoint = Vector2.new(1, 0.5)
guiObject.Position = UDim2.new(1, 0, 0.5, 0)
task.wait(1)
-- Bottom-left
guiObject.AnchorPoint = Vector2.new(0, 1)
guiObject.Position = UDim2.new(0, 0, 1, 0)
task.wait(1)
-- Bottom
guiObject.AnchorPoint = Vector2.new(0.5, 1)
guiObject.Position = UDim2.new(0.5, 0, 1, 0)
task.wait(1)
-- Bottom-right
guiObject.AnchorPoint = Vector2.new(1, 1)
guiObject.Position = UDim2.new(1, 0, 1, 0)
task.wait(1)
end
AutomaticSize
สมบัตินี้ใช้เพื่อปรับขนาด UI หลักของบุตรหลานโดยอัตโนมัติตามขนาดของบุตรหลาน คุณสามารถใช้สมบัตินี้เพื่อเพิ่มขนาดข้อความและเนื้อหาอื่น ๆ ให้กับวัตถุ UI ในเวลาการแก้ไขหรือวิ่งได้ และขนา
เมื่อ AutomaticSize ตั้งค่าเป็น Enum.AutomaticSize มูลค่าใด ๆ นอกจาก None สิ่งนี้อาจทำให้วัตถุ UI นี้ขยายตัวขึ้นขึ้นอยู่กับเนื้อหาของลูกของมัน
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการใช้สมบัติสิทธิ์นี้และวิธีการทำงาน โปรดดูที่ ที่นี่
ตัวอย่างโค้ด
-- Array of text labels/fonts/sizes to output
local labelArray = {
{ text = "Lorem", font = Enum.Font.Creepster, size = 50 },
{ text = "ipsum", font = Enum.Font.IndieFlower, size = 35 },
{ text = "dolor", font = Enum.Font.Antique, size = 55 },
{ text = "sit", font = Enum.Font.SpecialElite, size = 65 },
{ text = "amet", font = Enum.Font.FredokaOne, size = 40 },
}
-- Create an automatically-sized parent frame
local parentFrame = Instance.new("Frame")
parentFrame.AutomaticSize = Enum.AutomaticSize.XY
parentFrame.BackgroundColor3 = Color3.fromRGB(90, 90, 90)
parentFrame.Size = UDim2.fromOffset(25, 100)
parentFrame.Position = UDim2.fromScale(0.1, 0.1)
parentFrame.Parent = script.Parent
-- Add a list layout
local listLayout = Instance.new("UIListLayout")
listLayout.Padding = UDim.new(0, 5)
listLayout.Parent = parentFrame
-- Set rounded corners and padding for visual aesthetics
local roundedCornerParent = Instance.new("UICorner")
roundedCornerParent.Parent = parentFrame
local uiPaddingParent = Instance.new("UIPadding")
uiPaddingParent.PaddingTop = UDim.new(0, 5)
uiPaddingParent.PaddingLeft = UDim.new(0, 5)
uiPaddingParent.PaddingRight = UDim.new(0, 5)
uiPaddingParent.PaddingBottom = UDim.new(0, 5)
uiPaddingParent.Parent = parentFrame
for i = 1, #labelArray do
-- Create an automatically-sized text label from array
local childLabel = Instance.new("TextLabel")
childLabel.AutomaticSize = Enum.AutomaticSize.XY
childLabel.Size = UDim2.fromOffset(75, 15)
childLabel.Text = labelArray[i]["text"]
childLabel.Font = labelArray[i]["font"]
childLabel.TextSize = labelArray[i]["size"]
childLabel.TextColor3 = Color3.new(1, 1, 1)
childLabel.Parent = parentFrame
-- Visual aesthetics
local roundedCorner = Instance.new("UICorner")
roundedCorner.Parent = childLabel
local uiPadding = Instance.new("UIPadding")
uiPadding.PaddingTop = UDim.new(0, 5)
uiPadding.PaddingLeft = UDim.new(0, 5)
uiPadding.PaddingRight = UDim.new(0, 5)
uiPadding.PaddingBottom = UDim.new(0, 5)
uiPadding.Parent = childLabel
task.wait(2)
end
BackgroundColor3
สมบัตินี้กำหนดสีของพื้นหลัง GuiObject (สีกรอบสี) หากรายการของคุณมีข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อคว
สมบัติสมุดอื่นที่กำหนดคุณสมบัติทางสายตาของพื้นหลังคือ GuiObject.BackgroundTransparency หากตั้งค่านี้เป็น 1 จะไม่มีการเรนเดอร์ทั้งพื้นหลังหรือชายแดน
ดูเพิ่มเติม BorderColor3 .
ตัวอย่างโค้ด
-- Put this code in a LocalScript in a Frame
local frame = script.Parent
while true do
for hue = 0, 255, 4 do
-- HSV = hue, saturation, value
-- If we loop from 0 to 1 repeatedly, we get a rainbow!
frame.BorderColor3 = Color3.fromHSV(hue / 256, 1, 1)
frame.BackgroundColor3 = Color3.fromHSV(hue / 256, 0.5, 0.8)
task.wait()
end
end
BackgroundTransparency
สมบัตินี้กำหนดความโปร่งใสของพื้นหลังและขอบเขต GuiObject และ TextBox หรือ
หากค่านี้กำหนดเป็น 1 ไม่มีพื้นหลังหรือขอบเขตที่เรนเดอร์และพื้นหลัง GUI จะเป็นสมบูรณ์โปร่งใส
BorderColor3
กำหนดสีของ GuiObject เขตชายฝั่งสี่เหลี่ยมผืนผ้า (ซึ่งเรียกว่าสีเข็ม) นี้จะแยกออกจากโอเบจต์ของ GuiObject.BackgroundColor3 ของคุณ คุณจะไม
หมายเหตุว่าส่วนประกอบ UIStroke ช่วยให้สามารถใช้เอฟเฟกต์ชายแดนขั้นสูงได้
ตัวอย่างโค้ด
-- Put me inside some GuiObject, preferrably an ImageButton/TextButton
local button = script.Parent
local function onEnter()
button.BorderSizePixel = 2
button.BorderColor3 = Color3.new(1, 1, 0) -- Yellow
end
local function onLeave()
button.BorderSizePixel = 1
button.BorderColor3 = Color3.new(0, 0, 0) -- Black
end
-- Connect events
button.MouseEnter:Connect(onEnter)
button.MouseLeave:Connect(onLeave)
-- Our default state is "not hovered"
onLeave()
BorderMode
สมบัตินี้กำหนดวิธีการที่ GuiObject ขอบเขตถูกวางโดยมีขนาดของมันโดยใช้รายการเดียวกันในชื่อเรียบเรียงของเมือง Enum.BorderMode
หมายเหตุว่า UIStroke สามารถเข้าถึงคุณสมบัตินี้และสามารถใช้เอฟเฟกต์ชายแดนขั้นสูงได้
BorderSizePixel
สมบัตินี้กำหนดความกว้างของขอบ GuiObject ในพิกเซล การตั้งค่านี้ให้เป็น 0 จะปิดการใช้งานขอบทั้งหมด
หมายเหตุว่า UIStroke สามารถเข้าถึงคุณสมบัตินี้และสามารถใช้เอฟเฟกต์ชายแดนขั้นสูงได้
ตัวอย่างโค้ด
-- Put me inside some GuiObject, preferrably an ImageButton/TextButton
local button = script.Parent
local function onEnter()
button.BorderSizePixel = 2
button.BorderColor3 = Color3.new(1, 1, 0) -- Yellow
end
local function onLeave()
button.BorderSizePixel = 1
button.BorderColor3 = Color3.new(0, 0, 0) -- Black
end
-- Connect events
button.MouseEnter:Connect(onEnter)
button.MouseLeave:Connect(onLeave)
-- Our default state is "not hovered"
onLeave()
ClipsDescendants
สมบัตินี้กำหนดว่า GuiObject จะหลบหลีก (ทำให้มองไม่เห็น) ส่วนใดขององค์ประกอบ GUI ที่อยู่ภายนอกขอบเขตของสี่เหลี่ยมผืนผ้า
หมายเหตุว่า GuiObject.Rotation ไม่รองรับโดยคุณสมบัตินี้ หากคุณสมบัตินี้หรือ GUI บรรพบุรุษของมันมี non-零 GuiObject.Rotation คุณสมบัตินี้จะถูกรวมในกา
Interactable
กำหนดว่า GuiButton สามารถใช้งานได้หรือไม่ หรือว่า GuiState ของ GuiObject กําลังเปลี่ยนแปลงหรือไม่
บน GuiButton :
- เมื่อการตั้งค่า Interactable บน GuiButton ตั้งค่าเป็น true จะทำให้ 2>Class.GuiButton2> ปฏิสัมพันธ์ได้ตามปกติอีกครั้งและ 5>Class.Gui
ใน GuiObject :
- เมื่อการตั้งค่า Interactable บน GuiButton ตั้งค่าเป็น false จะตั้งค่า 2>Class.GuiObject.GuiState|GuiState2> อยู่เสมอ
- เมื่อการตั้งค่า Interactable บน GuiButton ตั้งค่าเป็น true สถานะ 1> Class.GuiObject.GuiState|GuiState1> จะปฏิสัมพันธ์ตามปกติอีกครั้ง
LayoutOrder
สมบัตินี้ควบคุมลำดับการเรียงลำดับของ GuiObject เมื่อใช้ UIGridStyleLayout (เช่น UIListLayout
GuiObjects เรียงลำดับตามลำดับของการเรียงลำดับที่ดีกว่า โดยมีค่าที่ต่ำกว่าค่าสูงสุด วัตถุที่มีค่าเท่ากันจะกลับไปที่ลำดับที่พวกเขาถูกเพิ่มใน
หากคุณไม่แน่ใจว่าคุณจะต้องเพิ่มรายการระหว่างสองรายการที่มีอยู่ในอนาคตหรือไม่นั้น ก็เป็นการดีกว่าที่จะใช้ 100 ( 0
ดูเพิ่มเติม ZIndex ซึ่งกำหนดลำดับการเรนเดอร์ของวัตถุโดยไม่ต้องเรียงลำดับลำดับ
NextSelectionDown
สมบัตินี้ตั้งค่า GuiObject ที่เลือกเมื่อผู้ใช้ย้ายเลื่อนเมาส์ลง เกมแพด เลื่อนตรงไป หากสมบัตินี้ว่างเปล่าจะไม่เปลี่ยนแปลง GUI ที่เลือก
การย้ายตัวเลือก gamepad ลงจะตั้ง GuiService.SelectedObject ไปยังตัวนี้ ยกเว้นว่า GUI ไม่ใช่ Selectable โปรดทราบว่าค่าของตัวเลือก GUI
ดูเพิ่มเติม NextSelectionUp , NextSelectionLeft และ NextSelectionRight
ตัวอย่างโค้ด
-- Setup the Gamepad selection grid using the code below
local container = script.Parent:FindFirstChild("Container")
local grid = container:GetChildren()
local rowSize = container:FindFirstChild("UIGridLayout").FillDirectionMaxCells
for _, gui in pairs(grid) do
if gui:IsA("GuiObject") then
local pos = gui.Name
-- Left edge
gui.NextSelectionLeft = container:FindFirstChild(pos - 1)
-- Right edge
gui.NextSelectionRight = container:FindFirstChild(pos + 1)
-- Above
gui.NextSelectionUp = container:FindFirstChild(pos - rowSize)
-- Below
gui.NextSelectionDown = container:FindFirstChild(pos + rowSize)
end
end
-- Test the Gamepad selection grid using the code below
local GuiService = game:GetService("GuiService")
local UserInputService = game:GetService("UserInputService")
GuiService.SelectedObject = container:FindFirstChild("1")
function updateSelection(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
local key = input.KeyCode
local selectedObject = GuiService.SelectedObject
if not selectedObject then
return
end
if key == Enum.KeyCode.Up then
if not selectedObject.NextSelectionUp then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Down then
if not selectedObject.NextSelectionDown then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Left then
if not selectedObject.NextSelectionLeft then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Right then
if not selectedObject.NextSelectionRight then
GuiService.SelectedObject = selectedObject
end
end
end
end
UserInputService.InputBegan:Connect(updateSelection)
NextSelectionLeft
สมบัตินี้ตั้งค่า GuiObject ที่เลือกเมื่อผู้ใช้ย้ายเลื่อกผู้เล่นไปทางซ้าย หากสมบัตินี้ว่างเปล่าการย้ายเลื่อนผู้เล่นไปทางซ้ายจะไม่เปลี่ยนแปลง GUI ที่เลือก
การย้ายตัวเลือก gamepad ไปทางซ้ายจะตั้ง GuiService.SelectedObject ไว้ที่ตัวนี้ยกเว้น GUI ไม่ใช่ Selectable หากคุณต้องการให้ค่าขอ
ดูเพิ่มเติม NextSelectionUp , NextSelectionDown และ NextSelectionRight .
ตัวอย่างโค้ด
-- Setup the Gamepad selection grid using the code below
local container = script.Parent:FindFirstChild("Container")
local grid = container:GetChildren()
local rowSize = container:FindFirstChild("UIGridLayout").FillDirectionMaxCells
for _, gui in pairs(grid) do
if gui:IsA("GuiObject") then
local pos = gui.Name
-- Left edge
gui.NextSelectionLeft = container:FindFirstChild(pos - 1)
-- Right edge
gui.NextSelectionRight = container:FindFirstChild(pos + 1)
-- Above
gui.NextSelectionUp = container:FindFirstChild(pos - rowSize)
-- Below
gui.NextSelectionDown = container:FindFirstChild(pos + rowSize)
end
end
-- Test the Gamepad selection grid using the code below
local GuiService = game:GetService("GuiService")
local UserInputService = game:GetService("UserInputService")
GuiService.SelectedObject = container:FindFirstChild("1")
function updateSelection(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
local key = input.KeyCode
local selectedObject = GuiService.SelectedObject
if not selectedObject then
return
end
if key == Enum.KeyCode.Up then
if not selectedObject.NextSelectionUp then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Down then
if not selectedObject.NextSelectionDown then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Left then
if not selectedObject.NextSelectionLeft then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Right then
if not selectedObject.NextSelectionRight then
GuiService.SelectedObject = selectedObject
end
end
end
end
UserInputService.InputBegan:Connect(updateSelection)
NextSelectionRight
สมบัตินี้ตั้งค่า GuiObject ที่เลือกเมื่อผู้ใช้ย้ายเลื่อยเกมไปที่ด้านขวา หากสมบัตินี้ว่างเปล่าการย้ายเกมไปที่ด้านขวาจะไม่เปลี่ยนแปลง GUI ที่เลือก
การย้ายตัวเลือก gamepad ไปที่ด้านขวาจะตั้ง GuiService.SelectedObject ไว้ที่ตัวนี้ยกเว้น GUI ไม่ใช่ Selectable หากตัวเลือกนี้ไม่ต
ดูเพิ่มเติม NextSelectionUp , NextSelectionDown และ NextSelectionLeft .
ตัวอย่างโค้ด
-- Setup the Gamepad selection grid using the code below
local container = script.Parent:FindFirstChild("Container")
local grid = container:GetChildren()
local rowSize = container:FindFirstChild("UIGridLayout").FillDirectionMaxCells
for _, gui in pairs(grid) do
if gui:IsA("GuiObject") then
local pos = gui.Name
-- Left edge
gui.NextSelectionLeft = container:FindFirstChild(pos - 1)
-- Right edge
gui.NextSelectionRight = container:FindFirstChild(pos + 1)
-- Above
gui.NextSelectionUp = container:FindFirstChild(pos - rowSize)
-- Below
gui.NextSelectionDown = container:FindFirstChild(pos + rowSize)
end
end
-- Test the Gamepad selection grid using the code below
local GuiService = game:GetService("GuiService")
local UserInputService = game:GetService("UserInputService")
GuiService.SelectedObject = container:FindFirstChild("1")
function updateSelection(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
local key = input.KeyCode
local selectedObject = GuiService.SelectedObject
if not selectedObject then
return
end
if key == Enum.KeyCode.Up then
if not selectedObject.NextSelectionUp then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Down then
if not selectedObject.NextSelectionDown then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Left then
if not selectedObject.NextSelectionLeft then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Right then
if not selectedObject.NextSelectionRight then
GuiService.SelectedObject = selectedObject
end
end
end
end
UserInputService.InputBegan:Connect(updateSelection)
NextSelectionUp
สมบัตินี้ตั้งค่า GuiObject ที่เลือกเมื่อผู้ใช้ย้ายเลื่อนผู้ควบคุมขึ้นด้านบน หากสมบัตินี้ว่างเปล่าการย้ายเลื่อนผู้ควบคุมขึ้นจะไม่เปลี่ยนแปลง GUI ที่เลือก
การย้ายตัวเลือก gamepad ขึ้นจะตั้ง GuiService.SelectedObject ไว้ที่ตัวนี้ยกเว้น GUI ไม่ใช่ Selectable หมายเหตุว่าค่าของตัวเลือก GUI
ดูเพิ่มเติม NextSelectionDown , NextSelectionLeft , NextSelectionRight .
ตัวอย่างโค้ด
-- Setup the Gamepad selection grid using the code below
local container = script.Parent:FindFirstChild("Container")
local grid = container:GetChildren()
local rowSize = container:FindFirstChild("UIGridLayout").FillDirectionMaxCells
for _, gui in pairs(grid) do
if gui:IsA("GuiObject") then
local pos = gui.Name
-- Left edge
gui.NextSelectionLeft = container:FindFirstChild(pos - 1)
-- Right edge
gui.NextSelectionRight = container:FindFirstChild(pos + 1)
-- Above
gui.NextSelectionUp = container:FindFirstChild(pos - rowSize)
-- Below
gui.NextSelectionDown = container:FindFirstChild(pos + rowSize)
end
end
-- Test the Gamepad selection grid using the code below
local GuiService = game:GetService("GuiService")
local UserInputService = game:GetService("UserInputService")
GuiService.SelectedObject = container:FindFirstChild("1")
function updateSelection(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
local key = input.KeyCode
local selectedObject = GuiService.SelectedObject
if not selectedObject then
return
end
if key == Enum.KeyCode.Up then
if not selectedObject.NextSelectionUp then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Down then
if not selectedObject.NextSelectionDown then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Left then
if not selectedObject.NextSelectionLeft then
GuiService.SelectedObject = selectedObject
end
elseif key == Enum.KeyCode.Right then
if not selectedObject.NextSelectionRight then
GuiService.SelectedObject = selectedObject
end
end
end
end
UserInputService.InputBegan:Connect(updateSelection)
Position
สมบัตินี้กำหนดพิกเซลและตําแหน่งเศษเสี้ยวของ GuiObject โดยใช้ UDim2 ตําแหน่งจะอยู่รอบ GuiObject.AnchorPoint ของวัตถุ
ตำแหน่งศาสก์เป็นค่าเฉลี่ยขนาดของรายการ GUI พ่อ, ถ้ามี
ส่วนพิกเซลของค่า UDim2 มีขนาดเท่ากันไม่ว่าขนาดของ GUI ปกติจะเล็กแค่ไหน ส่วนตัวอักษรจะแสดงตำแหน่งของวัตถุในพิกเซล ตำแหน่งจริงของวัตถุสามารถอ่านได้จา
Rotation
สมบัตินี้กำหนดจำนวนองศาที่ผู้ GuiObject หมุน การหมุนเป็นสมบัติเฉลี่ยของวัตถุ ไม่ใช่ เฉพาะ Class.GuiObject.Anchor
Selectable
สมบัตินี้กำหนดว่า GuiObject สามารถเลือกได้เมื่อกำลังนำทาง GUIs โดยใช้ gamepad
หากค่านี้เป็นค่าจริง, ก็สามารถเลือก GUI ได้ การเลือก GUI จะตั้งค่าคุณสมบัติ GuiService.SelectedObject นี้ให้กับตัวเรื่องนั้น
เมื่อค่านี้เป็นประเภทเท็งเลข จะไม่สามารถเลือก GUI ได้ แต่การตั้งค่านี้เป็นประเภทเท็งเลขเมื่อ GUI ได้รับการเลือกจะไม่เลือกมันหรือเปลี่ยนค่าของโปรไฟล์ GuiService.SelectedObject
เพิ่ม GuiObject.SelectionGained และ GuiObject.SelectionLost จะไม่ได้รับการเรียกใช้สำหรับรายการ สิ่งนี้จะไม่ได้รับการเรียกใช้สำหรับ GuiObject โดยคุณต้องเปลี่ยนสมบัติ พรรคเกี่ยวกับ
สมบัตินี้มีประโยชน์หาก GUI เชื่อมต่อกับหลาย GUI ผ่านคุณสมบัติเช่นนี้ Class.GuiObject.NextSelectionUp
ตัวอย่างโค้ด
local GuiService = game:GetService("GuiService")
local textBox = script.Parent
local function gainFocus()
textBox.Selectable = true
GuiService.SelectedObject = textBox
end
local function loseFocus(_enterPressed, _inputObject)
GuiService.SelectedObject = nil
textBox.Selectable = false
end
-- The FocusLost and FocusGained event will fire because the textBox
-- is of type TextBox
textBox.Focused:Connect(gainFocus)
textBox.FocusLost:Connect(loseFocus)
SelectionImageObject
คุณสมบัตินี้จะเปลี่ยนแปลงการตกแต่งการเลือกเริ่มต้นที่ใช้สำหรับแพดพันเกม
หมายเหตุว่าชิ้นส่วน SelectionImageObject ที่เลือกมีการเรียงร้อยของชิ้นส่วน GuiObject ด้วย Size ของรูปภาพ สำหรั
การเปลี่ยน SelectionImageObject สำหรับองค์ประกอบ GuiObject เท่านั้นจะส่งผลกระทบต่อองค์ประกอบนั้น เพื่อส่งผลกระทบต่อองค์ประกอบของผู้ใช้ทั้งหมดให้ตั้งค่าสมบัติของ Class.PlayerGui.
เพื่อกำหนดหรือตั้งค่าว่า GUI ตัวใดที่เลือกโดยผู้ใช้คุณสามารถใช้สมบัติของ GuiService.SelectedObject
SelectionOrder
GuiObjects ที่มีลำดับการเลือกต่ำกว่า เลือกไอเท็ม GuiObjects เมื่อเริ่มต้นการเลือกแผงควบคุมหรือโทร GuiService:Select() บนกำแพงต้นไม้
Size
สมบัตินี้กำหนดขนาดเส้นสกุล GuiObject โดยใช้ UDim2
ขนาดของเวกเตอร์สามารถเป็นขนาดของรูปปั้นพี่แม่ GUI หากมี
ส่วนพิกเซลของ UDim2 มีขนาดเท่ากันไม่ว่าขนาด GUI ปกติของคุณจะเล็กแค่ไหน ส่วนตัวอักษรจะแสดงขนาดของวัตถุในพิกเซล ขนาดของวัตถุที่แท้จริงสามารถอ่านได้จา
หาก GuiObject มีพ่อค้านั้นขนาดของมันในแต่ละแกนยังได้รับผลกระทบจาก SizeConstraint ของพ่อค้า
ตัวอย่างโค้ด
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Paste script into a LocalScript that is
-- parented to a Frame within a Frame
local frame = script.Parent
local container = frame.Parent
container.BackgroundColor3 = Color3.new(0, 0, 0) -- black
-- This function is called when the humanoid's health changes
local function onHealthChanged()
local human = player.Character.Humanoid
local percent = human.Health / human.MaxHealth
-- Change the size of the inner bar
frame.Size = UDim2.new(percent, 0, 1, 0)
-- Change the color of the health bar
if percent < 0.1 then
frame.BackgroundColor3 = Color3.new(1, 0, 0) -- black
elseif percent < 0.4 then
frame.BackgroundColor3 = Color3.new(1, 1, 0) -- yellow
else
frame.BackgroundColor3 = Color3.new(0, 1, 0) -- green
end
end
-- This function runs is called the player spawns in
local function onCharacterAdded(character)
local human = character:WaitForChild("Humanoid")
-- Pattern: update once now, then any time the health changes
human.HealthChanged:Connect(onHealthChanged)
onHealthChanged()
end
-- Connect our spawn listener; call it if already spawned
player.CharacterAdded:Connect(onCharacterAdded)
if player.Character then
onCharacterAdded(player.Character)
end
SizeConstraint
สมบัตินี้ตั้งค่า Size แกนที่ GuiObject จะสร้างบน, สมมติว่าขนาดของพ่อ Class.Gui ของมัน
สมบัตินี้มีประโยชน์สำหรับการสร้างวัตถุ GUI ที่มุ่งหมายเพื่อขนาด หรือ ความสูงของวัตถุพ่อ แต่ไม่ใช่ทั้งสอง เพื่อเก็บรักษาอัตราส่วนรูปของวัตถุไว้ เอาไว้เป็นประโยชน์
Visible
สมบัตินี้จะถูกเรนเดอร์ว่า GuiObject และลูกหลานของมันจะปรากฏ
การเรนเดอร์ของส่วนประกอบที่แต่ละของ GuiObject สามารถควบคุมได้โดยอิสระผ่านคุณสมบัติการโปร่งใสเช่น GuiObject.BackgroundTransparency และ TextLabel.TextTransparency และ 1>
เมื่อสมบัติสมบัตินี้เป็น false คลาส GuiObject จะถูกเพิกเฉยโดยโครงสร้างเลเยียนเช่น UIListLayout และ 1> Class.UIGridLayout1>
ตัวอย่างโค้ด
local gui = script.Parent
local window = gui:WaitForChild("Window")
local toggleButton = gui:WaitForChild("ToggleWindow")
local closeButton = window:WaitForChild("Close")
local function toggleWindowVisbility()
-- Flip a boolean using the `not` keyword
window.Visible = not window.Visible
end
toggleButton.Activated:Connect(toggleWindowVisbility)
closeButton.Activated:Connect(toggleWindowVisbility)
ZIndex
สมบัตินี้กำหนดลำดับในการเรนเดอร์ GuiObject เมื่อเปรียบเทียบกับคนอื่น
โดยปกติ, GuiObjects จะเรนเดอร์ในลำดับความสำคัญที่เพิ่มขึ้นโดยมีคนที่มีมูลค่าต่ำกว่า ZIndex
หากคุณไม่แน่ใจว่าคุณจะต้องเพิ่มรายการระหว่างสองรายการที่มีอยู่ในอนาคตหรือไม่นั้น มันเป็นการดีกว่าที่จะใช้ 100 (
ดูเพิ่มเติม LayoutOrder ซึ่งควบคุมการเรียงลำดับ เรียงลำดับ ของ GuiObject เมื่อใช้กับโครงสร้างเว็บไซต์เช่น 1> Class.UIListLayout1>
วิธีการ
TweenPosition
ย้าย GUI ไปยังตำแหน่งใหม่ที่กำหนดไว้ในเวลาที่ระบุโดยใช้ UDim2 และ Enum.EasingDirection และ Enum.EasingStyle
ฟังก์ชันนี้จะกลับมาว่าเวลาจะเล่นหรือไม่ มันจะไม่เล่นหากเวลาอื่นกำลังเล่นบน GuiObject และปารามิเตอร์เหนือการเปลี่ยนแปลงจะเป็นปลอม
ดูเพิ่มเติม:
- GuiObject:TweenSize() , วัยรุ่นขนาดของ GUI
- GuiObject:TweenSizeAndPosition() เด็กชายเด็กผู้หญิง a ขนาดและตำแหน่งของ GUI ที่จัดการอย่างไรก็ตาม
พารามิเตอร์
สถานที่ที่ GUI ควรย้ายไป
ทิศทางที่จะทำให้ GUI เป็น ตำแหน่งสิ้นสุด
สไตล์ในการลด GUI ลงไปยัง ตำแหน่งสิ้นสุด
เท่าไหร่ในวินาทีที่ทวีนจะใช้เวลาในการเสร็จสิ้น
ว่า tween จะทำซ้ำ tween ที่กำลังดำเนินอยู่หรือไม่
คุณสมบัติโทรหาเพื่อดำเนินการเมื่อสิ้นสุดการเรียก
ส่งค่ากลับ
ว่า tween จะเล่นหรือไม่
ตัวอย่างโค้ด
local START_POSITION = UDim2.new(0, 0, 0, 0)
local GOAL_POSITION = UDim2.new(1, 0, 1, 0)
local guiObject = script.Parent
local function callback(state)
if state == Enum.TweenStatus.Completed then
print("The tween completed uninterrupted")
elseif state == Enum.TweenStatus.Canceled then
print("Another tween cancelled this one")
end
end
-- Initialize the GuiObject position, then start the tween:
guiObject.Position = START_POSITION
local willPlay = guiObject:TweenPosition(
GOAL_POSITION, -- Final position the tween should reach
Enum.EasingDirection.In, -- Direction of the easing
Enum.EasingStyle.Sine, -- Kind of easing to apply
2, -- Duration of the tween in seconds
true, -- Whether in-progress tweens are interrupted
callback -- Function to be callled when on completion/cancelation
)
if willPlay then
print("The tween will play")
else
print("The tween will not play")
end
TweenSize
ปรับแต่ง GUI ให้เล็กลงเป็น Datatype.UDim2 ใหม่ในเวลาที่กำหนดโดยใช้ UDim2 และ Enum.EasingDirection และ Enum.EasingStyle
ฟังก์ชันนี้จะกลับมาว่าเวลาจะเล่นหรือไม่ โดยปกติจะสร้างขึ้นเสมอเมื่อเปิดใช้งาน แต่จะสร้างขึ้นเมื่ออีกเวลาจะถูกเปิดใช้งานและตั้งค่าเป็นปลอม
ดูเพิ่มเติม:
- GuiObject:TweenPosition() วิดีโอสาว ๆ ตำแหน่งของ GUI
- GuiObject:TweenSizeAndPosition() เด็กชายเด็กผู้หญิง a ขนาดและตำแหน่งของ GUI ที่จัดการอย่างไรก็ตาม
พารามิเตอร์
ขนาดที่ GUI ควรปรับแต่ง
ทิศทางที่จะทำให้ GUI เข้ากับ ขนาดตัวอักษรสิ้นสุด
สไตล์ในการลด GUI ลงเป็น ขนาดต้นท้าย
เท่าไหร่ในวินาทีที่ทวีนจะใช้เวลาในการเสร็จสิ้น
ว่า tween จะทำซ้ำ tween ที่กำลังดำเนินอยู่หรือไม่
คุณสมบัติโทรหาเพื่อดำเนินการเมื่อสิ้นสุดการเรียก
ส่งค่ากลับ
ว่า tween จะเล่นหรือไม่
ตัวอย่างโค้ด
local guiObject = script.Parent
local function callback(didComplete)
if didComplete then
print("The tween completed successfully")
else
print("The tween was cancelled")
end
end
local willTween = guiObject:TweenSize(
UDim2.new(0.5, 0, 0.5, 0), -- endSize (required)
Enum.EasingDirection.In, -- easingDirection (default Out)
Enum.EasingStyle.Sine, -- easingStyle (default Quad)
2, -- time (default: 1)
true, -- should this tween override ones in-progress? (default: false)
callback -- a function to call when the tween completes (default: nil)
)
if willTween then
print("The GuiObject will tween")
else
print("The GuiObject will not tween")
end
TweenSizeAndPosition
ปรับแต่ง GUI ให้เล็กลงและย้าย GUI ไปยังขนาดและตำแหน่งใหม่ในเวลาที่กำหนดโดยใช้ UDim2 และ Enum.EasingDirection และ Enum.EasingStyle ตามลำดับ
ฟังก์ชันนี้จะกลับมาว่าเวลาจะเล่นหรือไม่ โดยปกติจะสร้างขึ้นเสมอเมื่อเปิดใช้งาน แต่จะสร้างขึ้นเมื่ออีกเวลาจะถูกเปิดใช้งานและตั้งค่าเป็นปลอม
ดูเพิ่มเติม:
- GuiObject:TweenSize() , วัยรุ่นขนาดของ GUI
- GuiObject:TweenPosition() วิดีโอสาว ๆ ตำแหน่งของ GUI
พารามิเตอร์
ขนาดที่ GUI ควรปรับแต่ง
สถานที่ที่ GUI ควรย้ายไป
ทิศทางที่จะทำให้ GUI เข้ากับ ขนาดตัวอักษร และ ตำแหน่งตัวอักษร
สไตล์ที่จะทำให้ GUI เข้ากับ ขนาดตัวอักษร และ ตำแหน่งปลาย
เท่าไหร่ในวินาทีที่ทวีนจะใช้เวลาในการเสร็จสิ้น
ว่า tween จะทำซ้ำ tween ที่กำลังดำเนินอยู่หรือไม่
คุณสมบัติโทรหาเพื่อดำเนินการเมื่อสิ้นสุดการเรียก
ส่งค่ากลับ
ว่า tween จะเล่นหรือไม่
ตัวอย่างโค้ด
local frame = script.Parent.Frame
frame:TweenSizeAndPosition(UDim2.new(0, 0, 0, 0), UDim2.new(0, 0, 0, 0))
อีเวนต์
InputBegan
เหตุการณ์นี้จะเกิดขึ้นเมื่อผู้ใช้เริ่มใช้งาน GuiObject ผ่านอุปกรณ์ที่เชื่อมต่อกับมนุษย์-คอมพิวเตอร์ (ปุ่มเมาส์ลง, แตะเริ่ม, ปุ่มคีย์บอร์ด, ฯลฯ)
Class.UserInputService มีเหตุการณ์ที่มีชื่อเหมือนกันซึ่งไม่จำกัดอยู่ในรายการ UI เฉพาะ: UserInputService.InputBegan
เหตุการณ์นี้จะเกิดขึ้นเสมอไม่ว่าสถานะเกม
ดูเพิ่มเติม:
พารามิเตอร์
Class.InputObject ซึ่งประกอบด้วยข้อมูลที่มีประโยชน์สำหรับการเรียกใช้การป้อนข้อมูลของผู้ใช้เช่น type of input และ Enzym.UserInputState|สถานะข
ตัวอย่างโค้ด
-- In order to use the InputBegan event, you must specify the GuiObject
local gui = script.Parent
-- A sample function providing multiple usage cases for various types of user input
local function inputBegan(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
print("A key is being pushed down! Key:", input.KeyCode)
elseif input.UserInputType == Enum.UserInputType.MouseButton1 then
print("The left mouse button has been pressed down at", input.Position)
elseif input.UserInputType == Enum.UserInputType.MouseButton2 then
print("The right mouse button has been pressed down at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Touch then
print("A touchscreen input has started at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Gamepad1 then
print("A button is being pressed on a gamepad! Button:", input.KeyCode)
end
end
gui.InputBegan:Connect(inputBegan)
InputChanged
เหตุการณ์นี้จะเกิดขึ้นเมื่อผู้ใช้เปลี่ยนวิธีการโต้ตอบผ่านอุปกรณ์ระหว่างมนุษย์และคอมพิวเตอร์ (ปุ่มเมาส์ลง, แตะเริ่ม, ปุ่มกล้อง, ฯลฯ)
Class.UserInputService มีเหตุการณ์ที่มีชื่อเหมือนกันซึ่งไม่จำกัดอยู่ในรายการ UI เฉพาะ: UserInputService.InputChanged
เหตุการณ์นี้จะเกิดขึ้นเสมอไม่ว่าสถานะเกม
ดูเพิ่มเติม:
พารามิเตอร์
Class.InputObject ซึ่งประกอบด้วยข้อมูลที่มีประโยชน์สำหรับการเรียกใช้การป้อนข้อมูลของผู้ใช้เช่น type of input และ Enzym.UserInputState|สถานะข
ตัวอย่างโค้ด
local UserInputService = game:GetService("UserInputService")
local gui = script.Parent
local function printMovement(input)
print("Position:", input.Position)
print("Movement Delta:", input.Delta)
end
local function inputChanged(input)
if input.UserInputType == Enum.UserInputType.MouseMovement then
print("The mouse has been moved!")
printMovement(input)
elseif input.UserInputType == Enum.UserInputType.MouseWheel then
print("The mouse wheel has been scrolled!")
print("Wheel Movement:", input.Position.Z)
elseif input.UserInputType == Enum.UserInputType.Gamepad1 then
if input.KeyCode == Enum.KeyCode.Thumbstick1 then
print("The left thumbstick has been moved!")
printMovement(input)
elseif input.KeyCode == Enum.KeyCode.Thumbstick2 then
print("The right thumbstick has been moved!")
printMovement(input)
elseif input.KeyCode == Enum.KeyCode.ButtonL2 then
print("The pressure being applied to the left trigger has changed!")
print("Pressure:", input.Position.Z)
elseif input.KeyCode == Enum.KeyCode.ButtonR2 then
print("The pressure being applied to the right trigger has changed!")
print("Pressure:", input.Position.Z)
end
elseif input.UserInputType == Enum.UserInputType.Touch then
print("The user's finger is moving on the screen!")
printMovement(input)
elseif input.UserInputType == Enum.UserInputType.Gyro then
local _rotInput, rotCFrame = UserInputService:GetDeviceRotation()
local rotX, rotY, rotZ = rotCFrame:toEulerAnglesXYZ()
local rot = Vector3.new(math.deg(rotX), math.deg(rotY), math.deg(rotZ))
print("The rotation of the user's mobile device has been changed!")
print("Position", rotCFrame.p)
print("Rotation:", rot)
elseif input.UserInputType == Enum.UserInputType.Accelerometer then
print("The acceleration of the user's mobile device has been changed!")
printMovement(input)
end
end
gui.InputChanged:Connect(inputChanged)
InputEnded
เหตุการณ์ที่สิ้นสุดลงเมื่อผู้ใช้หยุดโต้ตอบผ่านอุปกรณ์ที่เชื่อมต่อระหว่างมนุษย์และคอมพิวเตอร์ (เมาส์ปุ่มลง, แตะเริ่ม, ปุ่มกล้อง, ฯลฯ)
Class.UserInputService มีเหตุการณ์ที่มีชื่อเหมือนกันซึ่งไม่จำกัดอยู่ในรายการ UI เฉพาะ: UserInputService.InputEnded
เหตุการณ์นี้จะเกิดขึ้นเสมอไม่ว่าสถานะเกม
ดูเพิ่มเติม:
พารามิเตอร์
Class.InputObject ซึ่งประกอบด้วยข้อมูลที่มีประโยชน์สำหรับการเรียกใช้การป้อนข้อมูลของผู้ใช้เช่น type of input และ Enzym.UserInputState|สถานะข
ตัวอย่างโค้ด
-- In order to use the InputChanged event, you must specify a GuiObject
local gui = script.Parent
-- A sample function providing multiple usage cases for various types of user input
local function inputEnded(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
print("A key has been released! Key:", input.KeyCode)
elseif input.UserInputType == Enum.UserInputType.MouseButton1 then
print("The left mouse button has been released at", input.Position)
elseif input.UserInputType == Enum.UserInputType.MouseButton2 then
print("The right mouse button has been released at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Touch then
print("A touchscreen input has been released at", input.Position)
elseif input.UserInputType == Enum.UserInputType.Gamepad1 then
print("A button has been released on a gamepad! Button:", input.KeyCode)
end
end
gui.InputEnded:Connect(inputEnded)
MouseEnter
เหตุการณ์ MouseEnter จะเกิดขึ้นเมื่อผู้ใช้ย้ายเมาส์ไปที่เอเจนต์ GUI
โปรดอย่าพึ่งพาข้อมูลอ้างอิง x และ y ที่ผ่านมาในเหตุการณ์นี้เป็นวิธีการปลอมพูดว่าคุณจะรู้ได้อย่างไรว่าเมาส
เหตุการณ์นี้จะเกิดขึ้นแม้ว่ารูปแบบ GUI จะแสดงอยู่ภายใต้องค์ประกอบอื่น
หากคุณต้องการติดตามเมาส์ของผู้ใช้เมื่อออกจาก GUI คุณสามารถใช้เหตุการณ์ GuiObject.MouseLeave ได้
ดูเพิ่มเติม:
พารามิเตอร์
ค่า x หน้าจอในพิกเซลที่เกี่ยวข้องกับมุมด้านบนซ้ายของหน้าจอ
ค่าความลึกของหน้าจอเมาส์ในพิกเซล, เมื่อเป็นค่าสัมพันธ์กับมุมด้านบนซ้ายของหน้าจอ
ตัวอย่างโค้ด
local guiObject = script.Parent
guiObject.MouseEnter:Connect(function(x, y)
print("The user's mouse cursor has entered the GuiObject at position", x, ",", y)
end)
MouseLeave
เหตุการณ์ MouseLeave จะเกิดขึ้นเมื่อผู้ใช้ย้ายเมาส์ออกจากเอเลเมนต์ GUI
โปรดอย่าพึ่งพาข้อมูลอ้างอิง x และ y ที่ผ่านโดยเหตุการณ์นี้เป็นวิธีที่เป็นประโยชน์ในการกำหนดว่าเมาส์ของผู้
เหตุการณ์นี้จะเกิดขึ้นแม้ว่ารูปแบบ GUI จะแสดงอยู่ภายใต้องค์ประกอบอื่น
ดูเพิ่มเติม:
พารามิเตอร์
ค่า x หน้าจอในพิกเซลที่เกี่ยวข้องกับมุมด้านบนซ้ายของหน้าจอ
ค่าความลึกของหน้าจอเมาส์ในพิกเซล, เมื่อเป็นค่าสัมพันธ์กับมุมด้านบนซ้ายของหน้าจอ
MouseMoved
การเพิ่มเติมเกิดขึ้นเมื่อผู้ใช้ย้ายเมาส์ของพวกเขาในขณะที่อยู่ภายใน GUI องค์ประกอบ มันเหมือนกับ Mouse.Move ซึ่งเปิดได้อย่างไรก็ตามว่าผู้ใช้มีเมาส์อยู่เหนืออ
หมายเหตุเหตุการณ์นี้จะเกิดขึ้นเมื่อตำแหน่งเมาส์ได้รับการปรับปรุงดังนั้นจึงจะเกิดขึ้นอยู่เรื่อย ๆ ในขณะที่เคลื่อนที่
อาร์กิวเมนต์ x และ y การใช้ การแสดงผลขนาดจอของผู้ใช้ในพิกเซล สามารถใช้ได้เพื่อกำหนดตำแหน่งเครื่องเขย่าเมาส์บน GUI หน้าจอ และข้อมูลตำแหน่งของเม
ตัวอย่างด้านล่างแสดงให้เห็นวิธีการกำหนดค่าเฉพาะของเมาส์ของผู้ใช้เมื่อเปรียบเทียบกับ GUI เอเลเมนต์:
local CustomScrollingFrame = script.Parent
local SubFrame = CustomScrollingFrame:FindFirstChild("SubFrame")
local mouse = game.Players.LocalPlayer:GetMouse()
function getPosition(X, Y)
local gui_X = CustomScrollingFrame.AbsolutePosition.X
local gui_Y = CustomScrollingFrame.AbsolutePosition.Y
local pos = Vector2.new(math.abs(X - gui_X), math.abs(Y - gui_Y - 36))
print(pos)
end
CustomScrollingFrame.MouseMoved:Connect(getPosition)
หมายเหตุว่าเหตุการณ์นี้อาจไม่ได้เกิดขึ้นเมื่อเมาส์ของผู้ใช้เข้าหรือออกจากรูปสีของ GUI ดังนั้นค่า x และ y อาจไม่ตรงกันอย่างสมบูรณ์แบบกับเหลี่ยมของขอบ GUI
ดูเพิ่มเติม:
พารามิเตอร์
ค่า x หน้าจอในพิกเซลที่เกี่ยวข้องกับมุมด้านบนซ้ายของหน้าจอ
ค่าความลึกของหน้าจอเมาส์ในพิกเซล, เมื่อเป็นค่าสัมพันธ์กับมุมด้านบนซ้ายของหน้าจอ
MouseWheelBackward
เหตุการณ์ WheelBackward จะเกิดขึ้นเมื่อผู้ใช้เลื่อนเมาส์ของพวกเขากลับไปที่ล้อเมาส์เมื่อมาส์อยู่เหนือองค์ประกอบ GUI หรือไม่ก็ตาม มันคล้ายกับ Mouse.WheelBackward
เหตุการณ์นี้เกิดขึ้นเพียงเพื่อเป็นเครื่องบ่งชี้ว่าล้อกำลังเคลื่อนที่ไปทางด้านหลัง สิ่งนี้หมายความว่า x และ y ตัวแปรของเมาส์ไม่เปลี่ยนแปลงในผลของเหตุการณ์นี้ ตัว
ดูเพิ่มเติม:
พารามิเตอร์
ค่า x หน้าจอในพิกเซลที่เกี่ยวข้องกับมุมด้านบนซ้ายของหน้าจอ
ค่าความลึกของหน้าจอเมาส์ในพิกเซล, เมื่อเป็นค่าสัมพันธ์กับมุมด้านบนซ้ายของหน้าจอ
MouseWheelForward
เหตุการณ์ WheelForward จะเกิดขึ้นเมื่อผู้ใช้เลื่อนเมาส์ของพวกเขาไปข้างหน้าเมื่อเมาส์อยู่เหนือองค์ประกอบ GUI ใด ๆ มันคล้ายกับ Mouse.WheelForward ซึ่งเปิดใช้งานไ
เหตุการณ์นี้เกิดขึ้นเพียงเพื่อเป็นเครื่องบอกตำแหน่งของล้อที่ก้าวไปข้างหน้า นี่หมายความว่า x และ y ตัวแปรของเมาส์ไม่เปลี่ยนแปลงในผลของเหตุการณ์นี้ ตัวแปรเหล่านี้เป
ดูเพิ่มเติม:
พารามิเตอร์
ค่า x หน้าจอในพิกเซลที่เกี่ยวข้องกับมุมด้านบนซ้ายของหน้าจอ
ความยาวของเมาส์ของผู้ใช้
SelectionGained
เหตุการณ์นี้จะเกิดขึ้นเมื่อ Gamepad เลือกเริ่มมุ่งเน้นไปที่ GuiObject
หากคุณต้องการตรวจสอบจาก Gamepad เลือกหยุดที่มุ่งเน้นไปที่องค์ประกอบ GUI คุณสามารถใช้เหตุการณ์ GuiObject.SelectionLost ได้
เมื่อ GUI ได้รับการเลือกโฟกัส, มูลค่าของสมบัติ SelectedObject โปรไฟล์ยังเปลี่ยนเป็นตัวเลือกที่ชนะการเลือก เพื่อระบุว่า GUI ได้รับเลือก, ตรวจสอบมูลค่าของสมบัตินี้
ตัวอย่างโค้ด
local guiObject = script.Parent
local function selectionGained()
print("The user has selected this button with a gamepad.")
end
guiObject.SelectionGained:Connect(selectionGained)
SelectionLost
เหตุการณ์นี้จะเกิดขึ้นเมื่อ Gamepad เลือกผู้ให้ความสนใจเฉพาะกับ GUI
หากคุณต้องการตรวจสอบจาก Gamepad เลือกเริ่มต้นให้ความสนใจกับ GUI เอเจนต์คุณสามารถใช้เหตุการณ์ GuiObject.SelectionGained ได้
เมื่อ GUI สูญเสียการโฟกัสการเลือก มูลค่าของสมบัติสร้างขึ้นจะเป็นศูนย์หรือสู่ GUI เอเลเมนต์ที่ได้รับการเลือก เพื่อกำหนดว่า GUI ใดที่ได้รับการเลือกหรือไม่มี GUI เลือก ตร
ตัวอย่างโค้ด
local guiObject = script.Parent
local function selectionLost()
print("The user no longer has this selected with their gamepad.")
end
guiObject.SelectionLost:Connect(selectionLost)
TouchLongPress
เหตุการณ์ TouchLongPress เกิดขึ้นหลังจากช่วงเวลาสั้น ๆ เมื่อผู้เล
เนื่องจากเหตุการณ์นี้ต้องใช้นิ้วเดียว, เหตุการณ์นี้สามารถจำลองใน Studio โดยใช้เมมูเลเตอร์และเมาส์
พารามิเตอร์
รายการของ Vector2 ที่อธิบายตำแหน่ง สัมพันธ์ ของนิ้วที่เกี่ยวข้องในการเคลื่อนไหว
Entity.UserInputState ที่อธิบายสถานะของการเคลื่อนไหว:
- เริ่มไฟที่เริ่มต้นของการเคลื่อนไหว (หลังจากความล่าช้าสั้น ๆ)
- เปลี่ยนไฟหากผู้เล่นย้ายนิ้วของพวกเขาในขณะที่กด
- จุดไฟที่สิ้นสุดเมื่อสิ้นสุดการเคลื่อนไหวเมื่อพวกเขาปล่อยนิ้วของพวกเขา
ตัวอย่างโค้ด
local frame = script.Parent
frame.Active = true
local dragging = false
local basePosition
local startTouchPosition
local borderColor3
local backgroundColor3
local function onTouchLongPress(touchPositions, state)
if state == Enum.UserInputState.Begin and not dragging then
-- Start a drag
dragging = true
basePosition = frame.Position
startTouchPosition = touchPositions[1]
-- Color the frame to indicate the drag is happening
borderColor3 = frame.BorderColor3
backgroundColor3 = frame.BackgroundColor3
frame.BorderColor3 = Color3.new(1, 1, 1) -- White
frame.BackgroundColor3 = Color3.new(0, 0, 1) -- Blue
elseif state == Enum.UserInputState.Change then
local touchPosition = touchPositions[1]
local deltaPosition = UDim2.new(
0,
touchPosition.X - startTouchPosition.X,
0,
touchPosition.Y - startTouchPosition.Y
)
frame.Position = basePosition + deltaPosition
elseif state == Enum.UserInputState.End and dragging then
-- Stop the drag
dragging = false
frame.BorderColor3 = borderColor3
frame.BackgroundColor3 = backgroundColor3
end
end
frame.TouchLongPress:Connect(onTouchLongPress)
TouchPan
เหตุการณ์ TouchPan เกิดขึ้นเมื่อผู้เล่นย้ายนิ้วของพวกเขาบนองค์ประกอบ UI โดยใช้อุปกรณ์เปิดใช้งานสัมผัส มันเปิดเมื่อ GuiObject.TouchSwipe จะ แ
เหตุการณ์นี้จะเกิดขึ้นด้วยตาราง Vector2 ที่อธิบายตำแหน่งหน้าจอของนิ้วของผู้มีส่วนร่วมในการเคลื่อนไหว นอกจากนี้ยั
เหตุการณ์นี้ไม่สามารถจำลองได้ใน Studio โดยใช้เมอร์เทอร์และเมาส์; คุณต้องมีอุปกรณ์จับแตะที่เปิดใช้งานจริงเพื่อการยิง
พารามิเตอร์
แสดงถึงความไกลที่แป้นเลื่อนได้ไปจากจุดเริ่มต้น
ระบุว่าเครื่องยนต์ทำงานเร็วแค่ไหนในแต่ละมิติ
ระบุ Entity.UserInputState ของการเคลื่อนไหว
ตัวอย่างโค้ด
local innerFrame = script.Parent
local outerFrame = innerFrame.Parent
outerFrame.BackgroundTransparency = 0.75
outerFrame.Active = true
outerFrame.Size = UDim2.new(1, 0, 1, 0)
outerFrame.Position = UDim2.new(0, 0, 0, 0)
outerFrame.AnchorPoint = Vector2.new(0, 0)
outerFrame.ClipsDescendants = true
local dragging = false
local basePosition
local function onTouchPan(_touchPositions, totalTranslation, _velocity, state)
if state == Enum.UserInputState.Begin and not dragging then
dragging = true
basePosition = innerFrame.Position
outerFrame.BackgroundTransparency = 0.25
elseif state == Enum.UserInputState.Change then
innerFrame.Position = basePosition + UDim2.new(0, totalTranslation.X, 0, totalTranslation.Y)
elseif state == Enum.UserInputState.End and dragging then
dragging = false
outerFrame.BackgroundTransparency = 0.75
end
end
outerFrame.TouchPan:Connect(onTouchPan)
TouchPinch
กิจกรรม TouchPinch เกิดขึ้นเมื่อผู้เล่นใช้นิ้วสองนิ้วเพื่อสร้างการเลื่อนหรือดึงการกระทําบนอ
เหตุการณ์นี้จะเกิดขึ้นด้วยตารางของ Vector2 ที่อธิบายตำแหน่งหน้าจอของนิ้วในการเคลื่อนไหว
เนื่องจากเหตุการณ์นี้ต้องใช้นิ้วสองนิ้วอย่างน้อยจึงจะไม่สามารถจำลองได้ใน Studio โดยใช้เมมูลเตอร์และเมาส์ คุณต้องมีอุปกรณ์ที่เปิดใช้งานแสดงผลจริง
พารามิเตอร์
ลอยตัวที่แสดงความแตกต่างตั้งแต่ต้นของการเลื่อนแป้น
ลอยตัวแสดงถึงความเร็วที่เกิดขึ้นของการกด
ระบุ Entity.UserInputState ของการเคลื่อนไหว
ตัวอย่างโค้ด
local innerFrame = script.Parent
local outerFrame = innerFrame.Parent
outerFrame.BackgroundTransparency = 0.75
outerFrame.Active = true
outerFrame.Size = UDim2.new(1, 0, 1, 0)
outerFrame.Position = UDim2.new(0, 0, 0, 0)
outerFrame.AnchorPoint = Vector2.new(0, 0)
outerFrame.ClipsDescendants = true
local dragging = false
local uiScale = Instance.new("UIScale")
uiScale.Parent = innerFrame
local baseScale
local function onTouchPinch(_touchPositions, scale, _velocity, state)
if state == Enum.UserInputState.Begin and not dragging then
dragging = true
baseScale = uiScale.Scale
outerFrame.BackgroundTransparency = 0.25
elseif state == Enum.UserInputState.Change then
uiScale.Scale = baseScale * scale -- Notice the multiplication here
elseif state == Enum.UserInputState.End and dragging then
dragging = false
outerFrame.BackgroundTransparency = 0.75
end
end
outerFrame.TouchPinch:Connect(onTouchPinch)
TouchRotate
เหตุการณ์ TouchRotate เกิดขึ้นเมื่อผู้เล่นใช้นิ้วสองของเขาเพื่อสร้างการเลื่อนหรือดึงสัญลักษณ์บนตัวอักษรใช้อุปกรณ์เปิดใช้งานแสงสัมผัส ก
เหตุการณ์นี้จะเกิดขึ้นด้วยตาราง Vector2 ที่อธิบายตำแหน่งหน้าจอของนิ้วในการเคลื่อนไหว นอกจากนี้ยังเปิดตัวหลายครั
เนื่องจากเหตุการณ์นี้ต้องใช้นิ้วสองนิ้วอย่างน้อยจึงจะไม่สามารถจำลองใน Studio โดยใช้เมมูเลเตอร์และเมาส์ได้ คุณต้องมีอุปกรณ์ที่เปิดใช้งานแสดงผลสัมผัสจริง
พารามิเตอร์
ตัวลอยที่แสดงว่าการหมุนนั้นไปไกลแค่ไหนตั้งแต่เริ่มต้นของการเคลื่อนไหว
ลอยตัวที่แสดงว่าการเคลื่อนไหวนี้เร็วแค่ไหน
ระบุ Entity.UserInputState ของการเคลื่อนไหว
ตัวอย่างโค้ด
local innerFrame = script.Parent
local outerFrame = innerFrame.Parent
outerFrame.BackgroundTransparency = 0.75
outerFrame.Active = true
outerFrame.Size = UDim2.new(1, 0, 1, 0)
outerFrame.Position = UDim2.new(0, 0, 0, 0)
outerFrame.AnchorPoint = Vector2.new(0, 0)
outerFrame.ClipsDescendants = true
local dragging = false
local baseRotation = innerFrame.Rotation
local function onTouchRotate(_touchPositions, rotation, _velocity, state)
if state == Enum.UserInputState.Begin and not dragging then
dragging = true
baseRotation = innerFrame.Rotation
outerFrame.BackgroundTransparency = 0.25
elseif state == Enum.UserInputState.Change then
innerFrame.Rotation = baseRotation + rotation
elseif state == Enum.UserInputState.End and dragging then
dragging = false
outerFrame.BackgroundTransparency = 0.75
end
end
outerFrame.TouchRotate:Connect(onTouchRotate)
TouchSwipe
เหตุการณ์ TouchSwipe เกิดขึ้นเมื่อผู้เล่นทำการเลื่อนของเหนือ UI โดยใช้อุปกรณ์ที่เปิดใช้งานด้วยแท็งก์เปิด มันจะเกิดขึ้นด้วยทิศทางของการเลื่อน (ขึ้น, ลง, ซ้ายหรือขวา) และจุดสั
เนื่องจากเหตุการณ์นี้ต้องใช้นิ้วเดียวจึงสามารถจำลองได้ใน Studio โดยใช้เมมูลเตอร์และเมาส์
พารามิเตอร์
A Enum.SwipeDirection แสดงทิศทางของการเลื่อน (ขึ้น, ลง, ซ้ายหรือขวา)
จำนวนจุดสัมผัสที่เกี่ยวข้องในการเคลื่อนไหว (โดยปกติ 1)
ตัวอย่างโค้ด
local frame = script.Parent
frame.Active = true
-- How far the frame should bounce on a successful swipe
local BOUNCE_DISTANCE = 50
-- Current state of the frame
local basePosition = frame.Position
local hue = 0
local saturation = 128
local function updateColor()
frame.BackgroundColor3 = Color3.fromHSV(hue / 256, saturation / 256, 1)
end
local function onTouchSwipe(swipeDir, _touchCount)
-- Change the BackgroundColor3 based on the swipe direction
local deltaPos
if swipeDir == Enum.SwipeDirection.Right then
deltaPos = UDim2.new(0, BOUNCE_DISTANCE, 0, 0)
hue = (hue + 16) % 255
elseif swipeDir == Enum.SwipeDirection.Left then
deltaPos = UDim2.new(0, -BOUNCE_DISTANCE, 0, 0)
hue = (hue - 16) % 255
elseif swipeDir == Enum.SwipeDirection.Up then
deltaPos = UDim2.new(0, 0, 0, -BOUNCE_DISTANCE)
saturation = (saturation + 16) % 255
elseif swipeDir == Enum.SwipeDirection.Down then
deltaPos = UDim2.new(0, 0, 0, BOUNCE_DISTANCE)
saturation = (saturation - 16) % 255
else
deltaPos = UDim2.new()
end
-- Update the color and bounce the frame a little
updateColor()
frame.Position = basePosition + deltaPos
frame:TweenPosition(basePosition, Enum.EasingDirection.Out, Enum.EasingStyle.Bounce, 0.7, true)
end
frame.TouchSwipe:Connect(onTouchSwipe)
updateColor()
TouchTap
เหตุการณ์ TouchTap เกิดขึ้นเมื่อผู้เล่นทำการกดทับที่หน้าจอด้วยการใช้อุปกรณ์เปิดใช้งานแบบสัมผัส ก
เนื่องจากเหตุการณ์นี้ต้องใช้นิ้วเดียวจึงสามารถจำลองได้ใน Studio โดยใช้เมมูลเตอร์และเมาส์
พารามิเตอร์
ตัวอย่างโค้ด
local frame = script.Parent
frame.Active = true
local function onTouchTap()
-- Toggle background transparency
if frame.BackgroundTransparency > 0 then
frame.BackgroundTransparency = 0
else
frame.BackgroundTransparency = 0.75
end
end
frame.TouchTap:Connect(onTouchTap)