"PlayerAdded" 脚本在玩家死亡后仍然有效。如何修复?
2019-7-4 0:7:41
收藏:0
阅读:126
评论:3
我试图创建这个脚本,其中我创建了一个 Loading Screen,它应该只工作一次,因为 PlayerAdded 函数是为此设计的。但是当玩家死亡时,Loading Screen 又会出现。问题出在哪里?
我使用了两种类型的 Player added。普通的 PlayerAdded 在只有一个玩家时不起作用,因为服务器刚刚启动并避免了玩家的脚本。第二种类型给我带来了这个问题。
function onPlayerAdded(Player)
local PlayerGui = game.Players.LocalPlayer:WaitForChild("PlayerGui")
PlayerGui:SetTopbarTransparency(0)
local LoadingScreen = Player.PlayerGui.LoadingScreen
...
end
game.Players.PlayerAdded:Connect(onPlayerAdded)
for _, player in pairs(game.Players:GetPlayers()) do
onPlayerAdded(player)
end
点赞
用户9922866
我设想的代码如下:
local players = game:GetService("Players")
-- 假设这个加载界面是脚本的子对象。
local gui = script:WaitForChild("LoadingGui")
local function onPlayerAdded(player)
local playerGui = player:WaitForChild("PlayerGui")
local clone = playerGui:FindFirstChild("LoadingGui")
if (not clone) then
clone = gui:Clone()
clone.Parent = playerGui
end
return
end
players.PlayerAdded:Connect(onPlayerAdded)
onPlayerAdded 应该在每个客户端上只触发一次,所以以预期的方式,GUI 只会出现一次。而且,将这段代码放在 Script 中,而非 LocalScript 中,放在 ServerScriptStorage 里是个好注意点。
2019-07-08 02:12:03
用户13429318
主要问题似乎是本地脚本正在与玩家一起重新创建。我认为这是因为该脚本位于玩家的StarterGui或StarterCharacterScripts中。解决方法是将此脚本移动到StarterPlayerScripts或ReplicatedFirst中。
另一个问题是当任何玩家加入时,将触发PlayerAdded。这是在本地脚本上完成的,因此每当有其他人加入时,加载屏幕就会出现,这很可能不是想要的结果。应该完全删除PlayerAdded以修复此问题,无论如何当前玩家添加时脚本都将自动运行。由于这一点,循环也是不必要的。
2021-11-04 23:24:35
评论区的留言会收到邮件通知哦~
推荐文章
- 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 代码?

你可以使用 ReplicatedFirst:
game.Players.PlayerAdded:Connect(function(plr) game.ReplicatedFirst.LoadingScreen:Clone().Parent = plr.PlayerGui end)如果我犯了任何错误,非常抱歉,因为我已经有一段时间没有在 Roblox 中进行编程了,而且我正在使用手机。