如何在 Roblox 中使用 GIF:作为粒子、贴在 Part 上或显示在 UI 中
Roblox 无法播放 GIF 文件,但可以播放其中的帧:将 GIF 转换为供 ParticleEmitter 使用的 Flipbook,或转换为精灵图,再用 Luau 播放,让 ImageLabel 在 Part 或屏幕上显示动画。
Roblox 会将图片导入为 PNG、JPG 或 BMP,并且只显示 GIF 的第一帧,所以上传为 Decal 的动画 GIF 会静止不动。解决方法是将 GIF 的每一帧放进一张图片里,再自行播放这些帧:ParticleEmitter 可以通过 Flipbook 自动播放,而 ImageLabel 只需几行 Luau 代码。
播放方式
- 在游戏世界中(火焰、传送门、金币、命中效果):在 ParticleEmitter 上使用 Flipbook。它会朝向摄像机、发光,并且只消耗一个粒子。
- 平铺在 Part 上(电视、海报、标牌):在 SurfaceGui 内的 ImageLabel 上使用精灵图,再由脚本逐帧播放。
- 显示在屏幕上(奖励弹出、惊吓效果、加载动画):在 ScreenGui 内使用相同的 ImageLabel。
可直接在 Roblox 中使用的现成动画
素材库中的每种特效都可以通过其 ROBLOX 按钮下载为 Roblox Flipbook,无需 GIF。以下是一些大家常搜索的 GIF 特效:
将自己的 GIF 制作为 Flipbook 粒子
- 打开免费的 Roblox Flipbook 制作工具,将 GIF 拖进去即可。它会在浏览器中运行,不会上传任何内容。
- Grid 保持为 Auto:最多 4 帧会排入 2x2 网格,最多 16 帧排入 4x4,最多 64 帧排入 8x8。更长的 GIF 会均匀选取 64 帧,因此播放时序仍会准确。
- 如果 GIF 有黑色背景,将 Background 设为 Black,即可使背景透明。
- 下载 Flipbook PNG,并在 Studio 的 Asset Manager 中上传。复制其资源 ID。
- 在工作区中放置一个带有 Attachment 的 Part,并在 Attachment 中放入名为
Flipbook的 ParticleEmitter。将 Texture 设为资源 ID,FlipbookLayout 设为对应网格,FlipbookMode 设为 OneShot,将 Lifetime 设为制作工具显示的秒数,并将 Speed 设为 0。 - 将此脚本添加到 Part 上。它会逐个粒子循环播放 GIF:
-- Script inside the Part. The ParticleEmitter is Part > Attachment > Flipbook.
local emitter = script.Parent:WaitForChild("Attachment"):WaitForChild("Flipbook") :: ParticleEmitter
local LIFETIME = 1.2 -- the Lifetime the flipbook maker shows
emitter.Rate = 0
emitter.Lifetime = NumberRange.new(LIFETIME)
while true do
emitter:Emit(1)
task.wait(LIFETIME)
end将 Size 设为所需的 studs 尺寸;对于发光特效,将 LightEmission 设为 1。其他属性请查看 Roblox 设置页面。
将自己的 GIF 显示在 Part 或屏幕上
要制作平面动画,请改用 GIF 转精灵图制作精灵图,并将图片尺寸控制在 1024 px 或更小(Roblox 会缩小更大的图片)。在 Part 上的 SurfaceGui 中,或在 ScreenGui 中放入 ImageLabel,将精灵图设为它的 Image,然后逐帧播放:
-- LocalScript inside the ImageLabel
local RunService = game:GetService("RunService")
local label = script.Parent :: ImageLabel
local COLUMNS, ROWS = 4, 4 -- the sheet's grid
local FRAMES = 16 -- frames in the sheet (the last row can be part-empty)
local FPS = 12
local SHEET = Vector2.new(1024, 1024) -- the sheet's size in px
local cell = Vector2.new(SHEET.X / COLUMNS, SHEET.Y / ROWS)
label.ImageRectSize = cell
local start = os.clock()
RunService.RenderStepped:Connect(function()
local i = math.floor((os.clock() - start) * FPS) % FRAMES
label.ImageRectOffset = Vector2.new((i % COLUMNS) * cell.X, (i // COLUMNS) * cell.Y)
end)LocalScript 可以在 ScreenGui 中运行,也可以放在 StarterGui 下的 SurfaceGui 中,并将其 Adornee 设为该 Part。如果 SurfaceGui 直接设为 Part 的子对象,请改用 Script 和 RunService.Heartbeat。
需要了解的限制
- 1024 px:Roblox 会缩小任何大于 1024 x 1024 的图片,因此较长的 GIF 会损失细节。减少帧数或缩小 GIF 可以保持清晰。
- 每个 Flipbook 最多 64 帧:8x8 网格是 Roblox 能读取的最大尺寸。更长的动画会均匀选取帧来播放,也可以拆分成两个 Flipbook。
- 审核:每张上传的图片都会像 Decal 一样经过审核。自己制作的动画或素材库中的特效都能顺利通过。
Flipbook PNG 免费提供:每个特效页面上的 ROBLOX 按钮无需账号即可使用;免费账号也可以在工作室导出(每天 3 个特效),并自行选择网格和贴图尺寸。现成模型(已配置发射器并附带播放脚本的 .rbxmx 文件)以及供 UI 使用的 UIFlipbook.luau,包含在所有方案中,价格从每月 $7.99 起。
将特效导入游戏
所有设置和两种导入方式(免费 PNG 或现成模型)都在 Roblox 设置页面中。按类型浏览更多素材,请查看 免费 Roblox VFX;导出前,也可以在工作室中修改任何特效:将 GIF 转换为发光粒子特效。
常见问题
Roblox 可以播放 GIF 吗?
不可以。Roblox 只会显示 GIF 的第一帧。请将所有帧放进一张图片中,也就是 Flipbook 或精灵图,再用 ParticleEmitter 或 ImageLabel 脚本播放。
如何将 GIF 制作为 Roblox 粒子?
将 GIF 拖入免费的 Roblox Flipbook 制作工具,下载方形 Flipbook PNG,上传后将其设为 ParticleEmitter 的 Texture,并将 FlipbookLayout 设为对应的网格,FlipbookMode 设为 OneShot,Lifetime 设为制作工具显示的数值。
为什么我的动画贴花不动?
Decal 和 ImageLabel 只会显示一张静态图片。要让它动起来,请使用精灵图,并像上面的 LocalScript 一样,每帧通过脚本更改 ImageRectOffset。
我可以在能赚取 Robux 的游戏中使用这些特效吗?
可以。导出的特效,包括从素材库开始制作的特效,都可以用于任何项目,包括商业游戏,无需注明出处。但不能将素材库本身作为特效包转售。





