带 Flipbook 的 Roblox UI 特效
在 Roblox UI 中播放动画特效:在 ScreenGui、SurfaceGui 或 BillboardGui 中的 ImageLabel 上显示 Flipbook PNG,并通过 ImageRectOffset 逐帧切换。内含免费的奖励、徽章和按钮特效。
ParticleEmitter 位于 3D 世界中,而奖励、按钮和徽章位于 ScreenGui 中。同一张 Flipbook PNG 也能在这里播放:ImageLabel 每次显示一帧,通过 ImageRectSize(帧的像素尺寸)和 ImageRectOffset(帧从左上角开始的位置)设置帧的大小和位置,再由 LocalScript 逐帧切换。
专为界面制作的特效
在 ImageLabel 上播放 Flipbook
帧从左上角开始,按行播放。网格和纹理尺寸写在文件名中(默认情况下,-roblox-8x8.png 表示纹理尺寸为 1024 px,包含 8 x 8 帧),时长则是特效页面上的 Lifetime。
-- LocalScript inside an ImageLabel
local RunService = game:GetService("RunService")
local label = script.Parent
local GRID, SIZE, SECONDS = 8, 1024, 2.8 -- from the file name and the effect page
local cell = SIZE / GRID
label.Image = "rbxassetid://123456789" -- your uploaded flipbook
label.ImageRectSize = Vector2.new(cell, cell)
local start = os.clock()
RunService.RenderStepped:Connect(function()
local t = (os.clock() - start) / SECONDS
local i = math.floor((t % 1) * GRID * GRID)
label.ImageRectOffset = Vector2.new((i % GRID) * cell, (i // GRID) * cell)
end)这个脚本会一直循环播放。配套模型还包含 UIFlipbook.luau,这是一个功能更丰富的 ModuleScript,作用相同:UIFlipbook.play(label, { image, grid, seconds, loop, size, pixelated })。当 loop 为 false 时,它会播放一次并隐藏 label;它还会为像素风特效设置 Pixelated 重采样模式,并返回一个 stop() 函数。
让效果看起来恰到好处
- 保持 label 为正方形。 每帧都是正方形单元格。在 ImageLabel 上添加 AspectRatio 为 1 的 UIAspectRatioConstraint,避免帧被拉伸,并将 BackgroundTransparency 设为 1。
- 宽幅横幅:宽度大于高度的特效会缩放到正方形单元格内,因此宽幅横幅只会占用其中一条区域。在工作室导出时选择 4x4 或 2x2 网格,让每帧尺寸达到 256 或 512 px。
- 发光:ImageLabel 会像普通图像一样绘制 PNG,不会像在世界中设置 LightEmission 1 那样添加光照。发光特效在深色面板上效果最好。
- 像素风:将 ImageLabel 的 ResampleMode 设为 Pixelated,缩放时像素特效就能保持清晰。
- 在世界中使用:同一脚本也适用于 BillboardGui 中的 ImageLabel(NPC 或宠物上方的图标),或 SurfaceGui 中的 ImageLabel(Part 上的标牌或屏幕)。
Flipbook PNG 免费提供:每个特效页面上的 ROBLOX 按钮无需账号即可使用;免费账号也可以在工作室导出(每天 3 个特效),并自行选择网格和贴图尺寸。现成模型(已配置发射器并附带播放脚本的 .rbxmx 文件)以及供 UI 使用的 UIFlipbook.luau,包含在所有方案中,价格从每月 $7.99 起。
将特效导入游戏
所有设置以及两种使用方式,即免费 PNG 和配套模型,都在 Roblox 设置页面。按游戏类型浏览更多选项,请前往 免费 Roblox VFX。导出前,也可以在工作室中修改任何特效:将颜色改成游戏的 UI 配色。
常见问题
如何在 Roblox ImageLabel 上播放精灵图表动画?
将 ImageRectSize 设为单帧的像素尺寸,然后在 LocalScript 中逐帧更改 ImageRectOffset:列号乘以帧宽,行号乘以帧高。帧从左上角开始按行计数。
可以在 ScreenGui 中使用 ParticleEmitter 吗?
不可以。ParticleEmitter 在 3D 世界中绘制。对于 UI,可以在 ImageLabel 上播放同一张 Flipbook PNG,UIFlipbook.luau 就是这样做的。
为什么我的 UI 特效看起来被拉伸了?
帧是正方形。如果 ImageLabel 不是正方形,帧就会被拉伸以适应它。添加 AspectRatio 为 1 的 UIAspectRatioConstraint。
我可以在能赚取 Robux 的游戏中使用这些特效吗?
可以。导出的特效,包括从素材库开始制作的特效,都可以用于任何项目,包括商业游戏,无需注明出处。但不能将素材库本身作为特效包转售。







