GUI 脚本简介¶
Time:15 分钟
关于 UDim2¶
UDim2 是调整 GUI 的大小并进行定位的系统。与 Vector3
不同,它用于定位部件。UDim2/new
函数接受四个参数:xScale、xOffset、yScale 和 yOffset。xScale 和 yScale 将返回相对于其父对象大小的值。如果 GUI 的父对象宽度为 100,则将 xScale 设置为 0.5 将返回 50,而将 xScale 设置为 1 将返回 100。高度和 yScale 也是如此。xOffset 是添加到 xScale 返回的任意数的像素数。例如,如果父对象宽度为 100,xScale 为 0.5,xOffset 为 25,则将返回 75 (100*0.5 + 25)。yOffset 和 yScale 也是如此。
借助 UDim2,开发者可以在玩家屏幕上以编程方式调整 UI 元素的大小并进行定位。例如:
local frame = Instance.new("Frame")
frame.Position = UDim2.new(0.25, 0, 0.25, 0)
frame.Size = UDim2.new(0.5, 0, 0.5, 0)
这样会创建定位在显示器中央的矩形 GUI,并覆盖 25% 的屏幕(一半宽度和一半高度)。
注意:这些 2D GUI 使用的 XY 网格与 Roblox 其余部分使用的坐标不同。(0, 0) 位置位于 GUI 元素的左上角。在此网格中,右侧为 X 正方向,下侧是 Y 正方向。
GUI 类型¶
在 Roblox 中,所有 GUI 必须位于特殊容器内。有三种不同类型的容器用于显示 GUI。它们是:
ScreenGui
SurfaceGui
BillboardGui
ScreenGui¶
ScreenGui
直接绘制到玩家屏幕(在游戏世界中没有位置)。这通常用于玩家旅行所需的 HUD、缩略图、任何信息或图形。ScreenGui 中的元素仅对拥有它们的玩家可见。要将 ScreenGui 添加到游戏中,可以将其置于 StarterGui
中(会将其复制到加入游戏的每位新玩家),也可以将其直接置于玩家的 PlayerGui
中(在这种情况下,仅对该玩家可见)。
SurfaceGui¶
SurfaceGui
绘制在 Part
的表面上。这会粘在部件上,即使部件移动或旋转也是如此。要将 SurfaceGui 添加到游戏中,可以将其直接置于要在其上绘制的部件中(它会为所有玩家显示 GUI)。或者,可以将 SurfaceGui 置于 StarterGui
中(它会将其复制到加入游戏的每位新玩家),也可以将其直接置于玩家的 PlayerGui
中(在这种情况下,仅对该玩家可见)。如果将 SurfaceGui 置于 StarterGui 或 PlayerGui 中,则必须将 SurfaceGui/Adornee
设置为要显示 GUI 的部件。
BillboardGui¶
BillboardGui
绘制在 Part
的位置上,但将始终面向玩家。如果部件移动,BillboardGui 也会随着一起移动。如果仅使用 BillboardGui/Size
UDim2 的 Scale 组件设置 BillboardGui 的大小,则会根据与玩家的距离进行调整(即,玩家越近就会变得越大,玩家越远就会变得越小)。如果设置了 Size 的 Offset,则 BillboardGui 将保持相同大小,无论与玩家的距离为何。
可以将 BillboardGui 直接置于要在其上绘制的部件中(它会为所有玩家显示 GUI)。或者,可以将 BillboardGui 置于 StarterGui
中(它会将其复制到加入游戏的每位新玩家),也可以将其直接置于玩家的 PlayerGui
中(在这种情况下,仅对该玩家可见)。如果将 BillboardGui 置于 StarterGui 或 PlayerGui 中,则必须将 BillboardGui/Adornee
设置为要显示 GUI 的部件。