📅  最后修改于: 2023-12-03 15:34:44.144000             🧑  作者: Mango
当我们需要在一个滚动框架内放置按钮时,有时候会遇到一个棘手的问题:按钮被滚动框架的边缘给隐藏了,导致用户无法看到或者操作。
本篇介绍了一种解决此问题的方法:使用 ViewportFrames
和 GuiObjects
来实现一个外部按钮。该方法可以确保按钮始终在滚动框架的可见区域内,而不管滚动框架的大小和滚动位置如何。
首先,在你的游戏中创建一个 Frame
并将其属性设置为如下:
Frame.Size = UDim2.new(1, 0, 1, 0)
Frame.BackgroundTransparency = 1
这个frame将占据整个屏幕,并且没有任何背景。我们将在其中创建 ViewportFrames
和 GuiObjects
。
接下来,创建一个 ViewportFrame
并将其属性设置为如下:
ViewportFrame.Size = UDim2.new(1, 0, 1, 0)
ViewportFrame.BackgroundTransparency = 1
ViewportFrame.ScrollingEnabled = true
ViewportFrame.Active = true
这个 ViewportFrame
将会被用做你的滚动框架。
在 ViewportFrame
中创建你的按钮,并将其属性设置为如下:
Button.AnchorPoint = Vector2.new(0.5, 0.5)
Button.Position = UDim2.new(0.5, 0, 0.5, 0)
注意,这个按钮的 AnchorPoint
必须为 (0.5, 0.5)
,因为我们需要将其放置在 ViewportFrame
的中心。
接下来,在 Frame
中创建一个新的 GuiObject
并将其属性设置为如下:
GuiObject.Size = UDim2.new(1, -15, 1, -15)
GuiObject.Position = UDim2.new(0, 7, 0, 7)
GuiObject.BackgroundTransparency = 1
注意,这个 GuiObject
的大小要比 ViewportFrame
小一些,以便让我们留下一定的间距用于放置一个滑动条。
在 GuiObject
中创建一个新的 ScrollingFrame
并将其属性设置为如下:
ScrollingFrame.AnchorPoint = Vector2.new(0, 0)
ScrollingFrame.Size = UDim2.new(1, 0, 1, 0)
ScrollingFrame.BackgroundTransparency = 1
ScrollingFrame.ScrollingEnabled = true
ScrollingFrame.BorderSizePixel = 0
ScrollingFrame.CanvasSize = UDim2.new(0, 0, 0, 400)
注意,这个 ScrollingFrame
的 AnchorPoint
必须为 (0, 0)
,因为我们需要将其放置在 GuiObject
的左上角。
将 ViewportFrame
放置在 ScrollingFrame
中:
ViewportFrame.Parent = ScrollingFrame
最后,将这个 GuiObject
放置在 Frame
中:
GuiObject.Parent = Frame
这样,我们就创建了一个外部的按钮,你可以用鼠标或手指拖动滚动框架,而按钮也会持续可见。
使用 ViewportFrames
和 GuiObjects
可以解决滚动框架内部按钮被遮挡的问题。我们使用 ViewportFrame
来创建滚动框架,将它放在 GuiObject
中以便留出一定的间距。最后,在 ViewportFrame
内创建按钮,并始终将其显示在 GuiObject
的可见范围内。
这种方法可以确保在不同大小和滚动位置的滚动框架中,按钮都能正常显示。