【问题标题】:Text only changes for player 2 and not player 1文本仅针对玩家 2 而不是玩家 1 更改
【发布时间】:2020-12-07 03:44:07
【问题描述】:

所以我输入了这个脚本(这是一个普通的脚本)来在有 2 个玩家在游戏中时更改文本,但问题是当玩家 2 稍后加入游戏时,文本只会更改为玩家 2,而玩家 1 没有任何反应(我将脚本插入到 textlabel 将更改的文本标签中)并且当玩家 1 离开游戏时,文本不会更改。无论如何这是脚本:

if #game:GetService("Players"):GetPlayers() >= 2 then
script.Parent.Text ="Intermission: 25"
wait(1)
script.Parent.Text ="Intermission: 24"
wait(1)
script.Parent.Text ="Intermission: 23"
wait(1)
script.Parent.Text ="Intermission: 22"
wait(1)
script.Parent.Text ="Intermission: 21"
wait(1)
script.Parent.Text ="Intermission: 20"
wait(1)
script.Parent.Text ="Intermission: 19"
wait(1)
script.Parent.Text ="Intermission: 18"
wait(1)
script.Parent.Text ="Intermission: 17"
wait(1)
script.Parent.Text ="Intermission: 16"
wait(1)
script.Parent.Text ="Intermission: 15"
wait(1)
script.Parent.Text ="Intermission: 14"
wait(1)
script.Parent.Text ="Intermission: 13"
wait(1)
script.Parent.Text ="Intermission: 12"
wait(1)
script.Parent.Text ="Intermission: 11"
wait(1)
script.Parent.Text ="Intermission: 10"
wait(1)
script.Parent.Text ="Intermission: 9"
wait(1)
script.Parent.Text ="Intermission: 8"
wait(1)
script.Parent.Text ="Intermission: 7"
wait(1)
script.Parent.Text ="Intermission: 6"
wait(1)
script.Parent.Text ="Intermission: 5"
wait(1)
script.Parent.Text ="Intermission: 4"
wait(1)
script.Parent.Text ="Intermission: 3"
wait(1)
script.Parent.Text ="Intermission: 2"
wait(1)
script.Parent.Text ="Intermission: 1"
wait(1)
script.Parent.Text ="Intermission: 0"
else
script.Parent.Text ="Waiting for Players"
end

【问题讨论】:

  • 1st,脚本不循环/重复,尝试添加事件。这也有点离题(抱歉),但我建议使用 for 循环来完成这项任务,它会为您节省很多时间和线路。
  • 那么 guis 需要本地脚本吗?
  • 是的。有一个正常的脚本检测是否有 2 个玩家在游戏中,然后让它触发一个事件。在您的本地脚本中,让它监听此事件,当它听到事件时编辑文本。
  • 我也确实使用了本地脚本,但问题是当我用 2 名玩家测试游戏时(需要 2 名玩家同时加入)中场休息落后于玩家 1。
  • 他们是在同一时间加入还是有宽限期。此外,您可能希望等待播放器加载,因为脚本可能会在加载第二个播放器的脚本之前检测到播放器。

标签: roblox


【解决方案1】:

这应该可以修复错误

local countdown = 25
local players = 0

game:GetService("Players").PlayerAdded:Connect(function()
    players = players + 1
end)

game:GetService("Players").PlayerRemoving:Connect(function()
    players = players - 1
end)

while wait(1) do
    if players > 1 then
        script.Parent.Text = "Intermission: ".. countdown
        print("Intermission: ".. countdown)
        countdown = countdown - 1
        if countdown <= 0 then
            script.Parent.Visible = false
            countdown = 25
        end
    end
    
    if players < 2 then
        script.Parent.Text = "Intermission: ".. countdown
        print("Intermission: ".. countdown)
        countdown = 25
    end
end

【讨论】:

  • 哦,我用事件代替,但谢谢你的回答!
  • 每个人都应该发布答案而不是评论,你能用支票标记我的吗,因为我的也有效,我是唯一正确回答的人
  • 你也能回答我的问题吗? stackoverflow.com/questions/63642253/…
  • 我检查了你的答案,很抱歉,我对脚本很陌生...
猜你喜欢
  • 2018-06-14
  • 2016-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-09
  • 2014-01-16
  • 2017-06-09
相关资源
最近更新 更多