GuiObject
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
GuiObject ist eine abstrakte Klasse (so wie BasePart ) für ein Objekt. Es defin
Um das Aussehen von GUI-Objekten auf spezielle Weise zu manipulieren, kannst du eine Gestaltungstruktur verwenden, wie z. B. Liste/Flex oder Raster, und du kannst sie über Auswahl-Modifikatoren außerhalb ihrer Kern属性 stylen.
Obwohl es möglich ist, Maus-Button-Ereignisse auf jedem GUI-Objekt mit InputBegan und InputEnded zu erkennen, haben nur ImageButton und 1> Class.TextButton1>
Zusammenfassung
Eigenschaften
Bestimmt, ob dieses UI-Element die Eingabe sinkt.
Bestimmt den Ursprungspunkt eines GuiObject , relativer zu seiner absoluten Größe.
Bestimmt, ob das Skalieren basierend auf Kindern Inhalt.
Bestimmt die Hintergrundfarbe des GuiObject.
Bestimmt die Transparenz der GuiObject -Hintergrund und -Rand.
Bestimmt die Farbe der GuiObject Grenze.
Bestimmt, in welcher Weise die GuiObject Kante relativ zu ihren Dimensionen platziert ist.
Bestimmt die Pixelbreite der GuiObject Grenze.
Bestimmt, ob der Nachkomme GuiObjects außerhalb der Grenzen eines Eltern-GUI-Elements rendernwerden soll.
Bestimmt, ob die Maus des Spieler:inauf dem GuiObject aktiviert wird oder nicht.
Bestimmt, ob das GuiButton mit oder ohne Interaktion möglich ist, oder ob das GuiState der GuiObject geändert wird oder nicht.
Steuert die Sortierungsordnung der GuiObject bei Verwendung mit einem UIGridStyleLayout.
Setzt das GuiObject, das ausgewählt wird, wenn der Gamepad-Auswahlhebel nach unten verschoben wird.
Setzt das GuiObject, das ausgewählt wird, wenn der Gamepad-Auswahl器 nach links verschoben wird.
Setzt das GuiObject, das ausgewählt wird, wenn der Gamepad-Auswahlheber rechts verschoben wird.
Setzt das GuiObject, das ausgewählt wird, wenn der Gamepad-Auswahlheber nach oben verschoben wird.
Bestimmt die Pixel- und SkalierungsPosition des GuiObject.
Bestimmt die Anzahl der Grad, in denen das GuiObject gedreht wird.
Bestimmen Sie, ob das GUI durch eine Gamepadausgewählt werden kann.
Überschreibt die Standard-Auswahlornamente für Gamepads.
Die Reihenfolge von GuiObjects , die von der Spielpad-Auswahl ausgewählt wurde.
Bestimmt die Pixel- und Skalierungsgröße des GuiObject.
Setzt die Size Achsen, auf denen die GuiObject basieren wird, relativ zur Größe ihres übergeordnetes Teil.
Eine gemischte Eigenschaft von BackgroundTransparency und TextTransparency.
Bestimmt, ob das GuiObject und seine Nachkommen gerendert werden.
Bestimmt die Reihenfolge, in der ein GuiObject relativo zu anderen rendert.
Beschreibt die tatsächliche Bildschirmposition eines UI-Elements in Pixeln.
Beschreibt die tatsächliche Bildschirmdrehung eines UI-Elements, in Grad.
Beschreibt die tatsächliche Bildschirmgröße eines UI-Elements in Pixel.
Wenn auf wahr gesetzt, wird die Lokalisierung auf diesen GuiBase2d und seinen Nachkommen angewendet.
Eine Verweisung auf eine LocalizationTable , die verwendet wird, um automatisierte Lokalisierung auf diesen GuiBase2d und seinen Nachkommen anzuwenden.
Benutzerdefiniert das Verhalten der Gamepad-Auswahl in Richtung unten.
Anpassen Sie das Gamepad-Auswahlverhalten in der linken Richtung.
Benutzerdefiniert das Verhalten der Spielpad-Auswahl in die richtige Richtung.
Benutzerdefiniert das Verhalten der Gamepad-Auswahl in Richtung nach oben.
Erlaubt die Anpassung der Gamepad-Auswahl.
Methoden
- TweenPosition(endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
Bewegt eine GUI mühelos zu einem neuen UDim2.
- TweenSize(endSize : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
Skaliert eine GUI makellos zu einer neuen UDim2 .
- TweenSizeAndPosition(endSize : UDim2,endPosition : UDim2,easingDirection : Enum.EasingDirection,easingStyle : Enum.EasingStyle,time : number,override : bool,callback : function):bool
Verschwindet ein GUI mühelos auf eine neue Größe und Position.
Ereignisse
Ausgelöst, wenn ein Benutzer mit einem Human-Computer-Interface-Gerät (Maus-Button, Touch-Anfang, Tastatur-Button usw.) interagiert.
Ausgelöst, wenn ein Benutzer die Interaktion über ein Mensch-Computer-Schnittstelle-Gerät (Maus-Button nach unten, Touch-Anfang, Tastatur-Button nach unten usw.) ändert.
Ausgelöst, wenn ein Benutzer die Interaktion über ein Mensch-Computer-Schnittstelle (Maus-Button, Touch-Beginn, Tastatur-Button usw.) aufgibt.
Feuert, wenn ein Benutzer seine Maus in ein GUI-Element bewegt.
Feuert, wenn ein Benutzer seine Maus aus einem GUI-Element bewegt.
Feuert, wenn ein Benutzer seine Maus bewegt, während sie in einem GUI-Element ist.
Feuert, wenn ein Benutzer seine Maus zurück scrollt, wenn die Maus über ein GUI-Element ist.
Feuert, wenn ein Benutzer seine Maus auf ein GUI-Element bewegt, wenn die Maus über einem GUI-Element ist.
Feuern, wenn das GuiObject mit dem Gamepad-Auswahl器 konzentriert wird.
Feuern, wenn der Gamepad-Auswahlbereich auf das GuiObject aufhört, sich zu konzentrieren.
Feuert, wenn der Spieler startet, hält und stoppt das Drücken der UI.
- TouchPan(touchPositions : Array,totalTranslation : Vector2,velocity : Vector2,state : Enum.UserInputState):RBXScriptSignal
Feuert, wenn der Spieler seinen Finger auf dem UI-Element bewegt.
- TouchPinch(touchPositions : Array,scale : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
Feuert, wenn der Spieler einen Pinch oder Ziehvorgang mit zwei Fingern auf der UI-Element ausführt.
- TouchRotate(touchPositions : Array,rotation : number,velocity : number,state : Enum.UserInputState):RBXScriptSignal
Feuert, wenn der Spieler einen Rotierungs-Gestalt mit zwei Fingern auf dem UI-Element ausführt.
Feuert, wenn der Spieler eine Swipe-Geste auf dem UI-Element ausführt.
Feuert, wenn der Spieler eine Berührung auf dem UI-Element ausführt.
- SelectionChanged(amISelected : bool,previousSelection : GuiObject,newSelection : GuiObject):RBXScriptSignal
Feuert, wenn die Gamepad-Auswahl bewegt wird, geht oder sich in der verbundenen GuiBase2d oder einem Nachfolge GuiObjekten ändert.
Eigenschaften
Active
Dieses Eigenschaft bestimmt, ob dies GuiObject die Eingabe in den Platzverschieben wird, wie z. B. unterliegende Modelle mit einer ClickDetector -Klasse wie DragDetector . In anderen Worten, wenn der Spieler versucht, den Detektor mit der Maus über einem aktiven UI-Element zu klicken, blockiert die UI die Eingabe,
Für GuiButton Objekte (ImageButton und Class.TextButton</
Code-Beispiele
-- 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
Die AnchorPoint -Eigenschaft bestimmt den Ursprungspunkt eines GuiObject , relativ zu seiner absoluten Größe. Der Ursprungspunkt bestimmt von wo der Element platziert wird (durch GuiObject.Position ) und von dem, was der rendierte 1>Class.GuiObject.Size1> -Expansion erweitert.
Siehe hier für ilustrierte Diagramme und Details.
Code-Beispiele
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
Dieses Eigenschaft wird verwendet, um die Größe der übergeordneten Benutzeroberflächenelemente basierend auf der Größe ihrer Nachkommen automatisch zu skalieren. Du kannst diese Eigenschaft verwenden, um Text und andere Inhalte zu einem UI-Objekt bei der Bearbeitung oder Ausführung zu dynamisch hinzuzufügen, und die Größe wird sich anpassen, um diesen Inhalt zu fassen.
Wenn AutomaticSize auf einen Enum.AutomaticSize -Wert für alles andere als None eingestellt ist, kann dieses UI-Objekt auf die Größe deines Kindes reorganisieren, abhängig von seinem Inhalt.
For more information on how to use this property and how it works, please see hier .
Code-Beispiele
-- 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
Dieses Eigenschaft bestimmt die Farbe eines GuiObject Hintergrund (die Füllfarbe). Wenn Ihr Element Text enthält, wie z. B. einen TextBox oder TextButton oder 1> Class.TextLabel1>, stellen Sie sicher, dass die Farbe Ihres Hintergrunds den Textfarben entspricht.
Eine weitere Eigenschaft, die die visuellen Eigenschaften des Hintergrunds bestimmt, ist GuiObject.BackgroundTransparency ; wenn dies auf 1 eingestellt ist, rendernweder der Hintergrund noch die Kante.
Siehe auch BorderColor3 .
Code-Beispiele
-- 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
Dieses Eigenschaft bestimmt die Transparenz des Hintergrunds und der Kanten des GuiObject und der GUI. Es bestimmt jedoch nicht die Transparenz des Textes, wenn die GUI ein TextBox, TextButton
Wenn diese Eigenschaft auf 1 eingestellt ist, rendert weder die Hintergrund noch die Kante, und die GUI-Hintergrund wird vollständig durchsichtig sein.
BorderColor3
Bestimmt die Farbe der GuiObject rechteckigen Grenze (einschließlich der Stiftfarbe). Dies ist von der Eigenschaft GuiObject.BackgroundColor3 des Objekts getrennt. Sie können die Grenze des Objekts nicht sehen, wenn seine GuiObject.BorderSizePixel Eigenschaft auf 1>0> eingestellt ist1> .
Beachten Sie, dass die UIStroke -Komponente für mehr fortgeschrittene Bordeffekte erlaubt.
Code-Beispiele
-- 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
Dieses Eigenschaft bestimmt, in welcher Weise die GuiObject -Kante in Bezug auf ihre Dimensionen mit dem Enumer des gleichen Namens, Enum.BorderMode , aufgebaut ist.
Beachten Sie, dass UIStroke diese Eigenschaft überschreiben kann und erlaubt mehr fortgeschrittene Kanteneffekte.
BorderSizePixel
Dieses Eigenschaft bestimmt, wie breit die GuiObject-Kante in Pixeln gerendert wird. Wenn Sie diese auf 0 setzen, wird die Kante vollständig deaktiviert.
Beachten Sie, dass UIStroke diese Eigenschaft überschreiben kann und erlaubt mehr fortgeschrittene Kanteneffekte.
Code-Beispiele
-- 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
Dieses Eigenschaft bestimmt, ob das GuiObject einen Teil der absteigenden GUI-Elemente kürzt (unsichtbar macht), der sonst außerhalb der Grenzen des Rechtecks rendert.
Beachten Sie, dass GuiObject.Rotation nicht von dieser Eigenschaftenunterstützt wird. Wenn diese oder ein Vorgänger-GUI eine nicht-Zero- GuiObject.Rotation hat, wird diese Eigenschaft ignoriert, und die abstammenden GUI-Elemente werden unabhängig von diesem Wert gerendert.
Interactable
Bestimmt, ob das GuiButton mit oder ohne Interaktion möglich ist, oder ob das GuiState der GuiObject geändert wird oder nicht.
Auf einem GuiButton :
- Wenn die Interactable Einstellung auf dem GuiButton auf false gesetzt ist, kann die 2>Class.GuiButton2> nicht mehr gedrückt oder geklickt werden, und die 5>Class.GuiObject.GuiState|GuiState
- Wenn die Interactable Einstellung auf dem GuiButton auf true gesetzt ist, verhält sich der 2>Class.GuiButton2> normal wieder und das 5>Class.GuiObject.GuiState|GuiState5> verhält sich normal.
Auf einem GuiObject :
- Wenn die Interactable Einstellung auf dem GuiButton auf false gesetzt ist, wird die 2>Class.GuiObject.GuiState|GuiState2> immer auf 5>5> gesetzt.
- Wenn die Interactable Einstellung auf dem GuiButton auf true gesetzt ist, wird die 2>Class.GuiObject.GuiState|GuiState2> wieder normal verhalten.
LayoutOrder
Dieses Eigenschaften steuert die Sortierungsordnung des GuiObject , wenn es mit einem UIGridStyleLayout (z. B. UIListLayout oder 1> Class.UIPageLayout1>) mit
GuiObjects sind in aufsteigender Reihenfolge sortiert, in der niedrigere Werte die obersten Werte haben. Objekte mit gleichen Werten fallen zurück in die Reihenfolge, in der sie hinzugefügt wurden.
Wenn Sie nicht sicher sind, ob Sie ein Element zwischen zwei bestehenden Elementen in der Zukunft hinzufügen müssen, ist es eine gute Praxis, mehrere von 100 ( 0 , 100 , 1> 1001> , usw.) zu verwenden. Dies gewährleistet eine große Lücke in der Platzordnung der Elemente, die
Siehe auch ZIndex, der das Objekt rendert -Orden anstelle der Sortierung sortiert.
NextSelectionDown
Dieses Eigenschaft setzt das GuiObject, das ausgewählt wird, wenn der Benutzer den gamepad-Auswahlheber nach unten bewegt. Wenn diese Eigenschaft leer ist, ändert das Bewegen des Gamepad nach unten nicht das ausgewählte grafische Benutzeroberfläche.
Das Verschieben des Gamepad-Auswahlators nach unten setzt das GuiService.SelectedObject an dieses Objekt, es sei denn, die GUI ist nicht Selectable . Beachten Sie, dass diese Eigenschaft auf ein grafische Benutzeroberflächeauch setzenbar ist, wenn es nicht Selectable ist.
Siehe auch NextSelectionUp , NextSelectionLeft und NextSelectionRight .
Code-Beispiele
-- 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
Dieses Eigenschaft setzt das GuiObject, das ausgewählt wird, wenn der Benutzer den gamepad-Auswahlbereich links bewegt. Wenn diese Eigenschaft leer ist, ändert das Bewegen des Gamepasses links nicht das ausgewählte grafische Benutzeroberfläche.
Das Verschieben des Gamepad-Auswahlators nach links setzt das GuiService.SelectedObject an dieses Objekt, es sei denn, die GUI ist nicht Selectable . Beachten Sie, dass diese Eigenschaft auf ein grafische Benutzeroberflächeauch setzenbar ist, wenn es nicht Selectable ist.
Siehe auch NextSelectionUp , NextSelectionDown und NextSelectionRight.
Code-Beispiele
-- 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
Dieses Eigenschaft setzt das GuiObject, das ausgewählt wird, wenn der Benutzer den gamepad-Auswahlbereich rechts bewegt. Wenn diese Eigenschaft leer ist, ändert das Bewegen des Gamepasses rechts nicht das ausgewählte grafische Benutzeroberfläche.
Das Verschieben des Gamepad-Auswahlators nach rechts setzt das GuiService.SelectedObject an dieses Objekt, es sei denn, die GUI ist nicht Selectable . Beachten Sie, dass diese Eigenschaft auf ein grafische Benutzeroberflächegesetzt werden kann, auch wenn es nicht Selectable ist.
Siehe auch NextSelectionUp , NextSelectionDown und NextSelectionLeft.
Code-Beispiele
-- 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
Dieses Eigenschaft setzt die GuiObject ausgewählt, wenn der Benutzer den gamepad-Auswahlheber nach oben bewegt. Wenn diese Eigenschaft leer ist, ändert das Bewegen des Gamepasses nach oben nicht das ausgewählte grafische Benutzeroberfläche.
Das Bewegen des Gamepad-Auswahlators nach oben setzt das GuiService.SelectedObject an dieses Objekt, es sei denn, die GUI ist nicht Selectable . Beachten Sie, dass diese Eigenschaft auf ein grafische Benutzeroberflächegesetzt werden kann, auch wenn es nicht Selectable ist, so dass Sie sicherstellen
Siehe auch NextSelectionDown , NextSelectionLeft , NextSelectionRight .
Code-Beispiele
-- 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
Dieses Eigenschaft bestimmt die GuiObject Pixel und SkalierungsPosition mit einem UDim2 . Die Position ist um das Objekt herum GuiObject.AnchorPoint .
Die SkalierungsPosition ist relativer zur Größe des Vorgänger-GUI-Elements, wenn vorhanden.
Die Pixelteile des UDim2-Wertes sind die gleichen unabhängig von der Größe der grafische Benutzeroberfläche. Die Werte repräsentieren die Position des Objekts in Pixel. Die tatsächliche Pixel-Position eines Objekts kann aus der Class.GuiBase2d.AbsolutePositionEigenschaftengelesen werden.
Rotation
Dieses Eigenschaft bestimmt die Anzahl der Grad, mit denen das GuiObject gedreht wird. Die Rotation ist in Bezug auf den Center des Objekts, nicht der 2>Class.GuiObject.AnchorPoint|AnchorPoint2>, was bedeutet, dass Sie den Drehpunkt nicht ändern können. Darüber hinaus ist diese E
Selectable
Dieses Eigenschaft bestimmt, ob das GuiObject ausgewählt werden kann, wenn Sie mit einem Gamepad GUI navigieren.
Wenn diese Eigenschaft wahr ist, kann eine GUI ausgewählt werden. Wenn Sie eine GUI auswählen, wird auch die GuiService.SelectedObject -Eigenschaft an dieses Objekt gesetzt.
Wenn dies falsch ist, kann die GUI nicht ausgewählt werden. Wenn Sie jedoch "Nein" auswählen, wenn eine GUI ausgewählt ist, deaktivieren Sie sie nicht und ändern Sie den Wert der GuiService.SelectedObject Eigenschaftennicht.
Add GuiObject.SelectionGained and GuiObject.SelectionLost will not fire for the element. To deselect a GuiObject, you must change the GuiService.SelectedObject Eigenschaften.
Dieses Eigenschaft nützlich, wenn ein grafische Benutzeroberflächeüber mehrere GUI's mit Eigenschaften wie dieser GuiObject.NextSelectionUp , GuiObject.NextSelectionDown , Class.GuiObjekt|NextSelection
Code-Beispiele
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
Dieses Eigenschaften überschreibt die Standard-Auswahl-Verzierung für Gamepads.
Beachten Sie, dass das gewählte SelectionImageObject das ausgewählte GuiObject mit dem Size des Bildes überschneidet. Für beste Ergebnisse sollten Sie das benutzerdefinierte 1> SelectionImageObject1> über die Skala 4> Datatype.UDim24>
Ändern des SelectionImageObject für ein GuiObject -Element betrifft nur dieses Element. Um alle GUI-Elemente eines Benutzers zu betrifen, setzen Sie die Eigenschaft PlayerGui.SelectionImageObject.
Um zu bestimmen oder festzulegen, welches GUI-Element der Benutzer auswählt, kannst du die Eigenschaft GuiService.SelectedObject verwenden. Der Spieler verwendet die Gamepad, um verschiedene GUI-Elemente auszuwählen, indem er den Class.GuiObject
SelectionOrder
GUIObjects mit einer niedrigeren Auswahl順序 werden früher ausgewählt als GUIObjects mit einer höheren Auswahl順序, wenn Sie die Spielpad-Auswahl starten oder auf einen Vorgänger aufrufen GuiService:Select(). Diese Eigenschaft hat keinen Einfluss auf die Richtungs-Navigation. Standardwert ist 0.
Size
Dieses Eigenschaft bestimmt die GuiObject Skalierung und Pixelgröße mit einem UDim2 .
Die Skalierung der Größe ist relativ zur Größe des Vorgänger-GUI-Elements, wenn vorhanden.
Die Pixelteile des UDim2-Wertes sind die gleichen unabhängig von der Größe der grafische Benutzeroberfläche. Die Werte repräsentieren die Größe des Objekts in Pixel. Die tatsächliche Pixelgröße eines Objekts kann aus der Class.GuiBase2d.AbsoluteSizeEigenschaftengelesen werden.
Wenn das GuiObject ein übergeordnetes Teilhat, wird seine Größe entlang jeder Achse auch von dem übergeordnetes TeilSizeConstraint beeinflusst.
Code-Beispiele
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
Dieses Eigenschaften setzt die Size Achsen, auf denen die GuiObject basieren wird, in Bezug auf die Größe seiner übergeordnetes Teil.
Dieses Eigenschaft ist nützlich für die Erstellung von GUI-Objekten, die entweder mit der Breite oder Höhe eines Elternobjekts skalieren sollen, aber nicht beide, wodurch das Aspektverhältnis des Objekts effektiv erhalten bleibt.
Visible
Diese Eigenschaft, ob das GuiObject und seine Nachkommen gerendert werden.
Die Rendering von einzelnen Komponenten eines GuiObject kann über Transparenz-Eigenschaften wie GuiObject.BackgroundTransparency, TextLabel.TextTransparency und 1> Class.ImageLabel.ImageTransparency1> kontrolliert werden.
Wenn diese Eigenschaft false ist, wird der GuiObject ignoriert durchLayoutstrukturen wie UIListLayout, 1> Class.UIGridLayout1> und 4> Class.UITableLayout4>. In anderen Worten, der Bereich, den der Element sonst in der布局 verwenden würde, wird von anderen Elementen verwendet.
Code-Beispiele
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
Dieses Eigenschaft bestimmt die Reihenfolge, in der ein GuiObject rendert, relativ zu anderen.
Standardmäßig wird GuiObjects in der aufsteigenden Prioritätsordnung gerendert, in der diejenigen mit niedrigeren ZIndex-Werten unter diesen mit höheren Werten gerendert werden. Sie können die Renderingordnung innerhalb eines ScreenGui,
Wenn Sie nicht sicher sind, ob Sie ein Element zwischen zwei bestehenden Elementen in der Zukunft hinzufügen müssen, ist es eine gute Praxis, mehrere von 100 ( 0 , 100 , 1> 2001> , usw.) zu verwenden. Dies gewährleistet eine große Render-Ordnenfolge, die Sie für Elemente
Siehe auch LayoutOrder, welche die Sortierung Ordnung eines GuiObject steuert, wenn es mit einer 1> Class.UIListLayout1> oder 4> Class.UIGridLayout4> Struktur verwendet wird.
Methoden
TweenPosition
Bewegt eine GUI mühelos zu einer neuen Position UDim2 in der angegebenen Zeit mit dem angegebenen Enum.EasingDirection und Enum.EasingStyle.
Diese Funktion wird zurückkehren, ob das Tween spielen wird. Es wird nicht spielen, wenn ein anderes Tween auf dem GuiObject agiert und der Überschreibungsparameter falsch ist.
Siehe auch:
- GuiObject:TweenSize() , Tweens die Größe einer grafische Benutzeroberfläche
- GuiObject:TweenSizeAndPosition() , Tweens die Größe und Position einer grafische Benutzeroberflächesynchron
Parameter
Wo die GUI hin soll.
Die Richtung, in der die GUI zur EndPosition leicht wird.
Der Stil, in dem die GUI zum EndPosition leicht wird.
Wie lange, in Sekunden, der Tween dauert, um ihn abzuschließen.
Ob das Tween einen in der Zwischenzeit liegenden Tweet überschreibt.
Eine Rückruf-Funktion, die ausgeführt wird, wenn der Tween abgeschlossen ist.
Rückgaben
Ob der Tween spielen.
Code-Beispiele
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
Skaliert eine GUI in einer bestimmten Zeit mit der angegebenen UDim2 und Enum.EasingDirection und Enum.EasingStyle auf ein neues 2>Datatype.UDim22>.
Diese Funktion wird zurückkehren, ob das Tween spielen wird. Normalerweise wird dies immer true zurückgeben, aber es wird false zurückgeben, wenn ein anderes Tween aktiv ist und Override auf false gesetzt ist.
Siehe auch:
- GuiObject:TweenPosition() , Tweens die Position einer grafische Benutzeroberfläche
- GuiObject:TweenSizeAndPosition() , Tweens die Größe und Position einer grafische Benutzeroberflächesynchron
Parameter
Die Größe, die die GUI Größe anpassensollte.
Die Richtung, in der die GUI zum EndSize einfacht.
Der Stil, in dem die GUI auf die EndSize leicht geändert wird.
Wie lange, in Sekunden, der Tween dauert, um ihn abzuschließen.
Ob das Tween einen in der Zwischenzeit liegenden Tweet überschreibt.
Eine Rückruf-Funktion, die ausgeführt wird, wenn der Tween abgeschlossen ist.
Rückgaben
Ob der Tween spielen.
Code-Beispiele
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
Glättet und bewegt eine GUI zu einer neuen UDim2 Größe und Position in der angegebenen Zeit mit dem angegebenen Enum.EasingDirection und Enum.EasingStyle .
Diese Funktion wird zurückkehren, ob das Tween spielen wird. Normalerweise wird dies immer true zurückgeben, aber es wird false zurückgeben, wenn ein anderes Tween aktiv ist und Override auf false gesetzt ist.
Siehe auch:
- GuiObject:TweenSize() , Tweens die Größe einer grafische Benutzeroberfläche
- GuiObject:TweenPosition() , Tweens die Position einer grafische Benutzeroberfläche
Parameter
Die Größe, die die GUI Größe anpassensollte.
Wo die GUI hin soll.
Die Richtung, in der die GUI zur Endgröße und Endposition leicht abgeflacht werden soll.
Der Stil, in dem die GUI zum endSize und endPosition einfacht wird.
Wie lange, in Sekunden, der Tween dauert, um ihn abzuschließen.
Ob das Tween einen in der Zwischenzeit liegenden Tweet überschreibt.
Eine Rückruf-Funktion, die ausgeführt wird, wenn der Tween abgeschlossen ist.
Rückgaben
Ob der Tween spielen.
Code-Beispiele
local frame = script.Parent.Frame
frame:TweenSizeAndPosition(UDim2.new(0, 0, 0, 0), UDim2.new(0, 0, 0, 0))
Ereignisse
InputBegan
Dieses Ereignis wird ausgelöst, wenn ein Benutzer mit dem GuiObject über ein Mensch-Computer-Oberfläche-Gerät interagiert (Maus-Taste nach unten, Berührung beginnen, Tastatur-Taste nach unten usw.).
Das UserInputService hat ein ähnlich namiges Ereignis, das nicht auf ein bestimmtes UI-Element beschränkt ist: UserInputService.InputBegan .
Dieses Ereignis wird immer ausgelöst, unabhängig vom Spielzustand.
Siehe auch:
Parameter
Ein InputObject, der nützliche Daten für die Anfrage von Benutzereingaben enthält, wie z. B. type of input , state of input und 1> Class.InputObjekt.Position|屏幕koordinationen der Eingabe1> .
Code-Beispiele
-- 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
Dieses Ereignis wird ausgelöst, wenn ein Benutzer die Art und Weise, wie sie mit einem Menschen-Computer-Interface-Gerät interagieren, ändert (Maus-Taste nach unten, Berührung beginnen, Tastatur-Taste nach unten usw.).
Das UserInputService hat ein ähnlich namiges Ereignis, das nicht auf ein bestimmtes UI-Element beschränkt ist: UserInputService.InputChanged .
Dieses Ereignis wird immer ausgelöst, unabhängig vom Spielzustand.
Siehe auch:
Parameter
Ein InputObject, der nützliche Daten für die Anfrage von Benutzereingaben enthält, wie z. B. type of input , state of input und 1> Class.InputObjekt.Position|屏幕koordinationen der Eingabe1> .
Code-Beispiele
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
Das Event Ended wird ausgelöst, wenn ein Benutzer aufhört, mit einem menschlich-computer-interface-gerät (Maus-Button, Touch-Anfang, Tastatur-Button usw.) zu interagieren.
Das UserInputService hat ein ähnlich namiges Ereignis, das nicht auf ein bestimmtes UI-Element beschränkt ist: UserInputService.InputEnded .
Dieses Ereignis wird immer ausgelöst, unabhängig vom Spielzustand.
Siehe auch:
Parameter
Ein InputObject, der nützliche Daten für die Anfrage von Benutzereingaben enthält, wie z. B. type of input , state of input und 1> Class.InputObjekt.Position|屏幕koordinationen der Eingabe1> .
Code-Beispiele
-- 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
Das MouseEnter-Ereignis wird ausgelöst, wenn ein Benutzer seine Maus in ein GUI-Element bewegt.
Bitte verlassen Sie sich nicht auf die x und y Argumente, die von diesem Ereignis als ein "fool-proof"-Weg zur Bestimmung der Position der Maus eingegeben werden, wenn sie eine grafische Benutzeroberflächebetritt. Diese Koordinaten können sich sogar ändern, wenn die Maus über den gleichen Kante betritt die grafische Benutzeroberfläche. Dies liegt daran, dass die Koordinaten die Position der Maus anzeigen,
Dieses Ereignis wird ausgelöst, wenn der GUI-Element unter einem anderen Element gerendert wird.
Wenn Sie verfolgen möchten, wenn die Maus eines Benutzers eine GUI-Element verlässt, können Sie das Ereignis GuiObject.MouseLeave verwenden.
Siehe auch:
Parameter
Die x-Schirmkoordination in Pixeln in der oberen linken Ecke des Bildschirms.
Die Y-Bildschirmkoordination der Maus in Pixeln, relativ zur oberen linken Ecke des Bildschirms.
Code-Beispiele
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
Das Mausverlassen-Ereignis wird ausgelöst, wenn ein Benutzer seine Maus aus einem GUI-Element bewegt.
Bitte verlassen Sie sich nicht auf die x und y Argumente, die von diesem Ereignis als ein "fool-proof"-Weg verwendet werden, um zu bestimmen, wo sich die Maus befindet, wenn sie eine grafische Benutzeroberflächeverlässt. Diese Koordinaten können sich sogar ändern, wenn die Maus über den gleichen Kante das grafische Benutzeroberflächeverlässt - insbesondere, wenn die Maus das Element schnell verlässt.
Dieses Ereignis wird ausgelöst, wenn der GUI-Element unter einem anderen Element gerendert wird.
Siehe auch:
Parameter
Die x-Schirmkoordination in Pixeln in der oberen linken Ecke des Bildschirms.
Die Y-Bildschirmkoordination der Maus in Pixeln, relativ zur oberen linken Ecke des Bildschirms.
MouseMoved
Feuert, wenn ein Benutzer seine Maus bewegt, während sie in einem GUI Element ist. Es ist ähnlich wie Mouse.Move, der unabhängig davon feuert, ob die Maus des Benutzers über ein GUI-Element ist.
Beachten Sie, dass dieses Ereignis ausgelöst wird, wenn die Position des Maus aktualisiert wird, daher wird es während des Bewegungs wiederholt ausgeführt.
Die x und y Argumente zeigen die aktualisierten Bildschirmkoordinaten des Benutzers der Maus in Pixel. Dies kann nützlich sein, um die Position der Maus auf der grafische Benutzeroberfläche, dem Bildschirm und dem Delta zu bestimmen, seit der Maus zuvor in einer globalen Variable verfolgt wird.
Der Code unten zeigt, wie man den Vector2 Offset der Maus des Benutzers in Relation zu einem GUI-Element ermittelt:
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)
Beachten Sie, dass dieses Ereignis nicht genau ausgelöst wird, wenn die Maus des Benutzers eine GUI-Element eingibt oder verlässt. Daher können die x und y-Argumente nicht perfekt auf die Positionen der grafische Benutzeroberflächeübereinstimmen.
Siehe auch:
Parameter
Die x-Schirmkoordination in Pixeln in der oberen linken Ecke des Bildschirms.
Die Y-Bildschirmkoordination der Maus in Pixeln, relativ zur oberen linken Ecke des Bildschirms.
MouseWheelBackward
Das WheelBackward-Ereignis wird ausgelöst, wenn ein Benutzer seine Maus-Rad zurückScrollt, wenn die Maus über ein Class.GuiObject|GUI-Element ist. Es ist ähnlich wie Class.Mouse.WheelBackward , das unabhängig davon feuert, ob die Maus über ein GUI-Element ist.
Dieses Ereignis wird nur als Hinweis auf die Rückwärtsbewegung des Rads ausgeführt. Dies bedeutet, dass die x- und y-Mauskoordinaten argumente nicht als Ergebnis dieses Ereignisses ändern. Diese Koordinaten ändern sich nur, wenn die Maus bewegt wird, was durch das GuiObject.MouseMoved -Ereignis verfolgt werden kann.
Siehe auch:
Parameter
Die x-Schirmkoordination in Pixeln in der oberen linken Ecke des Bildschirms.
Die Y-Bildschirmkoordination der Maus in Pixeln, relativ zur oberen linken Ecke des Bildschirms.
MouseWheelForward
Das Rad vorwärts-Ereignis wird ausgelöst, wenn ein Benutzer seine Mausrad nach vorne scrollt, wenn die Maus über ein Class.GuiObject|GUI-Element ist. Es ist ähnlich wie Class.Mouse.WheelForward, das unabhängig davon ausgeht, ob die Maus über ein GUI-Element ist.
Dieses Ereignis wird nur als Hinweis auf die vorwärts Bewegung des Rads ausgeführt. Dies bedeutet, dass die x und y Mouse坐标 argumente nicht ändern als Ergebnis dieses Ereignisses. Diese坐标 nur ändern, wenn die Maus bewegt wird, was durch das GuiObject.MouseMoved Ereignis verfolgt werden kann.
Siehe auch:
Parameter
Die x-Schirmkoordination in Pixeln in der oberen linken Ecke des Bildschirms.
Die Y-Koordinate der Maus des Benutzers.
SelectionGained
Dieses Ereignis wird ausgelöst, wenn der Gamepad-AuswahlATOR sich auf das GuiObject konzentriert.
Wenn Sie auf der Gamepad überprüfen möchten, ob sich der Fokus auf das GUI-Element konzentriert, können Sie das Ereignis GuiObject.SelectionLost verwenden.
Wenn ein GUI-Fokus auf die Auswahl gewinnt, ändert sich der Wert der SelectedObject -Eigenschaft auch auf die Auswahl. Um festzustellen, welches GUI-Fokus die Auswahl erhalten hat, überprüfen Sie den Wert dieser Eigenschaften.
Code-Beispiele
local guiObject = script.Parent
local function selectionGained()
print("The user has selected this button with a gamepad.")
end
guiObject.SelectionGained:Connect(selectionGained)
SelectionLost
Dieses Ereignis wird ausgelöst, wenn der Gamepad-Auswahlator auf der GUI konzentriert wird.
Wenn Sie auf der Gamepad überprüfen möchten, ob sich der Fokus auf das GUI-Element konzentriert, können Sie das Ereignis GuiObject.SelectionGained verwenden.
Wenn ein GUI den Auswahlfokus verliert, ändert sich der Wert der SelectionObject -Eigenschaft entweder auf null oder auf das GUI-Element, das Auswahlfokus gewährt. Um festzustellen, welches GUI die Auswahl erhalten hat, oder wenn kein GUI ausgewählt wird, überprüfen Sie den Wert dieser Eigenschaften.
Code-Beispiele
local guiObject = script.Parent
local function selectionLost()
print("The user no longer has this selected with their gamepad.")
end
guiObject.SelectionLost:Connect(selectionLost)
TouchLongPress
Das Ereignis TouchLongPress nach einem kurzen Moment, in dem der Spieler seinen Finger auf dem UI-Element mit einem Touch-fähigen Gerät hält, feuert mit einer Tabelle von Dat
Da dieses Ereignis nur einen Finger erfordert, kann dieses Ereignis in Studio mit dem Emulator und einer Maus simuliert werden.
Parameter
Ein Array von Vector2, das die relativen Positionen der Finger beschreibt, die im Gestik verwendet werden.
Ein Enum.UserInputState, das den Zustand des Gestells beschreibt:
- Beginne Feuer einmal am Anfang des Gestells (nach der kurzen Verzögerung)
- Ändern Sie die Feuer, wenn der Spieler seinen Finger während der Tastenkombinationen drückt
- Ende das Feuer einmal am Ende des Gestells, wenn sie ihren Finger loslassen.
Code-Beispiele
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
Das Ereignis TouchPan öffnet, wenn der Spieler seinen Finger auf dem UI-Element mit einem touch-fähigen Gerät bewegt. Es öffnet kurz vor, wenn GuiObject.TouchSwipe würde, und feuert nicht mit GuiObject.TouchTap . Dieses Ereignis ist nützlich, um dem Spieler zu ermöglichen, die Position von UI-Elementen auf dem Bildschirm zu manipulieren.
Dieses Ereignis wird mit einer Tabelle von Vector2 ausgelöst, die die relativen Bildschirmpositionen der mit dem Gestik zu tun haben Finger beschreibt. Darüber hinaus wird es mehrere Mal ausgelöst: Enum.UserInputState.Begin nach einer kurzen Verzögerung, Enum.UserInputState.Change wenn der Spieler seinen Finger während
Dieses Ereignis kann nicht mit dem Emulator und einer Maus in Studio simuliert werden; Sie müssen ein reales touch-fähiges Gerät haben, um es zu aktivieren.
Parameter
Ein Lua- Array von Vector2 Objekten, jedes der die Position aller mit dem Gestik verbundenen Finger anzeigt.
Zeigt, wie weit der Panzer-Gestaltungsvorlage vom Startpunkt entfernt ist.
Zeigt, wie schnell der Gestik in jeder Dimension ausgeführt wird.
Zeigt den Enum.UserInputState des Gestells an.
Code-Beispiele
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
Das Ereignis TouchPinch wird ausgelöst, wenn der Spieler zwei Finger verwendet, um einen Pinch oder einen Zug geste auf dem UI-Element mit einem touch-fähigen Gerät auszuführen. Ein Pinch geschieht, wenn zwei oder mehr Finger näher beieinander bewegen, und ein
Dieses Ereignis wird mit einer Tabelle von Vector2 ausgelöst, die die relativen Bildschirmpositionen der Finger, die im Gesten beteiligt sind, beschreibt. Darüber hinaus feuert es mehrere Mal: Enum.UserInputState.Begin nach einer kurzen Verz
Da dieses Ereignis mindestens zwei Finger erfordert, ist es nicht möglich, es in Studio mit dem Emulator und einer Maus zu simulieren; Sie müssen ein reales Touch-Enabled-Gerät haben.
Parameter
Ein Lua- Array von Vector2 Objekten, jedes der die Position aller beteiligten Finger im Pinch-Gestik anzeigt.
Ein schwimmender Punkt, der die Differenz vom Anfang des Pinz-Gestikts anzeigt.
Ein schwimmender Punkt, der zeigt, wie schnell der Pitch-Gestik geschieht.
Zeigt den Enum.UserInputState des Gestells an.
Code-Beispiele
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
Das Ereignis TouchRotate wird ausgelöst, wenn der Spieler zwei Finger verwendet, um einen Pinch oder einen Zug auf dem UI-Element mit einem touch-fähigen Gerät auszuführen. DieRotation erfolgt, wenn der Winkel der Linie zwischen zwei Fingern sich ändert. Dieses Ereignis wird in Zusammenarbeit mit GuiObject.TouchPan ausgelöst. Dieses Ereignis ist nützlich, um den Spieler zu ermö
Dieses Ereignis wird mit einer Tabelle von Vector2 ausgelöst, die die relativen Bildschirmpositionen der mit dem Gestik zu tun haben Finger beschreibt. Darüber hinaus wird es mehrere Mal ausgelöst: Enum.UserInputState.Begin nach einer kurzen Verzögerung, Enum.UserInputState.Change wenn der Spieler einen Finger während
Da dieses Ereignis mindestens zwei Finger erfordert, ist es nicht möglich, in Studio mit dem Emulator und einer Maus zu simulieren; Sie müssen ein reale Touch-fähiges Gerät haben.
Parameter
Ein Lua- Array von Vector2 Objekten, jedes der die Position aller mit dem Gestik verbundenen Finger anzeigt.
Ein schwimmender Punkt, der anzeigt, wie viel dieRotation vom Anfang des Gestells gegangen ist.
Ein schwimmender Punkt, der anzeigt, wie schnell der Gestik wird ausgeführt.
Zeigt den Enum.UserInputState des Gestells an.
Code-Beispiele
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
Das TouchSwipe-Ereignis wird ausgelöst, wenn der Spieler mit einem touch-fähigen Gerät auf die UI-Elemente einen Swipe-Gestik verwendet, um die Richtung des Gestiks (Up, Down, Left oder Rechts) und die Anzahl der Touch-Punkte, die im Gestik enthalten sind, zu ändern. Swipe-Gesten werden oft verwendet, um die Registerkarten in mobilen UIs zu ändern.
Da dieses Ereignis nur einen Finger erfordert, kann es mit dem Emulator und einer Maus in Studio simuliert werden.
Parameter
Ein Enum.SwipeDirection zeigt die Richtung des Swipe-Gestikts (nach oben, unten, links oder rechts).
Die Anzahl der Berührungspunkte, die im Gestik verwendet werden (normalerweise 1).
Code-Beispiele
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
Das TouchTap-Ereignis wird ausgelöst, wenn der Spieler mit einem touch-fähigen Gerät auf die UI-Elemente einen Tap-Gestik verwendet, um eine bewegung beteiligt ist (ein längere drücken würde GuiObject.TouchLongPress , und das bewegen während des T
Da dieses Ereignis nur einen Finger erfordert, kann es mit dem Emulator und einer Maus in Studio simuliert werden.
Parameter
Code-Beispiele
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)