在 Roblox 上本地播放音乐
我在我的 Roblox 游戏中遇到了本地音乐播放方面的一些问题。
我的游戏中有一个脚本,将 五个音频文件 插入到 玩家的 GUI 中。当建立服务器时,这些声音确实会出现在玩家的 GUI 中。
为了播放这些声音,我已经设置了一些部件来检测玩家的碰撞。当探测到玩家时,它们会在 玩家的 GUI 中播放一个 五个音频文件 中的一个。
以下是其中一个部件中的代码:
script.Parent.Touched:connect(function(hit)
if hit.Parent:FindFirstChild('Humanoid') then
if game.Players[hit.Parent.Name].PlayerGui.Sound2.TimePosition < 1 then
game.Players[hit.Parent.Name].PlayerGui.Sound2.Volume = 1
game.Players[hit.Parent.Name].PlayerGui.Sound2:Play()
game.Players[hit.Parent.Name].PlayerGui.Sound1:Stop()
game.Players[hit.Parent.Name].PlayerGui.Sound4:Stop()
game.Players[hit.Parent.Name].PlayerGui.Sound3:Stop()
game.Players[hit.Parent.Name].PlayerGui.Sound5:Stop()
end
end
end)
我已经测试过这个脚本能够正常地检测到玩家。该系统在 Roblox Studio 测试区域中确实有效,但是在设置了服务器后,没有任何声音被播放。
事实上,服务器确实将这些声音设置为正在播放,并且在客户端从服务器端看起来正在播放,但客户端看不到它们正在播放,也听不到它们的声音。
我已经开启了数据库过滤功能,但这不应该影响它...
一种方法是将音频的Parent设置为PlayerGui(如果您需要ScreenGui,可以考虑修改),然后使用:Play()播放音频。
FilteringEnabled 是这段代码无法工作的原因。
为了解决这个问题,你可以使用游戏中的 ReplicatedStorage 中的 RemoteEvent。
声音应该被放置在 StarterGUI 中,并且应该有一个本地脚本,脚本如下:
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local event = ReplicatedStorage:WaitForChild("REMOTE EVENT NAME")
script.Parent.Sound2.Playing = true
local function onNewPlayerFired(sound)
script.Parent.Sound1.Playing = false
script.Parent.Sound2.Playing = false
script.Parent.Sound3.Playing = false
script.Parent.Sound4.Playing = false
script.Parent.Sound5.Playing = false
script.Parent[sound].Playing = true
end
event.OnClientEvent:Connect(onNewPlayerFired)
在每个声音触发部分,应该加入以下代码:
local debounce = false
script.Parent.Touched:connect(function(hit)
if debounce == true then return end
debounce = true
if hit.Parent:FindFirstChild('Humanoid') then
local plr = game.Players:FindFirstChild(hit.Parent.Name)
game.ReplicatedStorage.REMOTE EVENT NAME:FireClient(plr,"SOUND NAME")
end
wait(2)
debounce = false
end)
我最近在制作音乐播放器时遇到了这个问题。最后发现问题很傻,和前端有关。我的播放器能够在Test Studio中工作,但在客户机端却给了我一长串错误代码,我只需要将脚本更改为本地脚本就可以解决问题。重点是,在工作室中的所有相同代码都能在客户机端正常工作。我花了整整一天的时间在头痛和维基搜索中才找到我的错误。起初,FE对我来说是一场噩梦,但我已经开始喜欢它为游戏提供的安全性了。 :)
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

我相信这是某个十分简单的东西。我觉得这是 SoundService 的一个函数。如果我错了,请纠正我,但我相信它是这样的:
soundobj = game.Players[hit.Parent.Name].PlayerGui.Sound2 game:GetService('SoundService'):PlayLocalSound(soundobj)请参阅 https://wiki.roblox.com/index.php?title=API:Class/SoundService/PlayLocalSound 以获取更多信息。