【问题标题】:How to make a screenGui element visible for all players everytime an event is fired?每次触发事件时,如何使所有玩家都能看到 screenGui 元素?
【发布时间】:2020-07-11 10:25:56
【问题描述】:

我正在使用“wave”脚本,每 2 分钟随机生成一组僵尸。在那之后,仍然活着的僵尸将从工作区中移除并由另一个随机组替换。这可以永远持续下去。

每个组中的一个僵尸都有一个触发事件的脚本,该脚本被放置(克隆自己)在 ReplicatedStorage 中,然后在 3 秒后删除该事件以避免重复。

当工作区中出现新的僵尸组时,一旦检测到 ReplicatedStorage 中存在事件,我就会弹出一个 Gui。我这样做的方式是在 StarterGui 中放置一个本地脚本和一个 Gui。这是一个简单的 Gui,当我启动游戏时,它的框架没有设置为可见,因为我希望玩家只看到出现新浪潮的 Gui。

到目前为止一切顺利,一切都像魅力一样工作(第一组出现,触发事件,然后弹出消息出现,然后在 3 秒后消失).. 是的。一切都好……除了一件事……桂只会出现一次。我需要该 Gui 出现在所有玩家面前,并且每次出现新的一波,然后在 3 秒后移除。

我希望我正确地解释了我需要什么。所以这里是我放在 StarterGui 中的本地脚本的代码。我花了几天时间试图解决这个问题。

local Event = game.ReplicatedStorage:WaitForChild("ZombieEvent")

--

player = game.Players.LocalPlayer

player.PlayerGui.ZombieGui.Frame.Visible = true
wait(3)
player.PlayerGui.ZombieGui.Frame.Visible = false


--

while Event do
    wait(.05)   
end

谢谢!

【问题讨论】:

    标签: lua roblox


    【解决方案1】:

    这就是您的代码现在的工作方式:

    1. 等待 ReplicatedStorage 中存在名为 ZombieEvent 的对象。 (您的僵尸脚本在对象中克隆)
    2. 显示 ZombieGui 3 秒,然后再次隐藏
    3. 当 ZombieEvent 继续存在时,请稍候。 (这个循环最终被其他删除 ZombieEvent 的脚本打破)

    然后脚本结束,这就是它的结束,没有什么可以告诉代码从头开始或以某种方式循环回来。

    如果您希望这适用于您的回合制游戏,有几种方法可以解决此问题,但我建议您这样做:

    1. 在 ReplicatedStorage 中保留一个名为 ZombieEvent 的 RemoteEvent,不要费心在每一轮克隆或删除它。
    2. 将函数连接到 LocalScript 中的 RemoteEvent's OnClientEvent signal
    3. 让特殊的僵尸使用FireAllClients function 发射信号。

    这就是它的样子:

    -- Local Script
    player = game.Players.LocalPlayer
    
    local Event = game.ReplicatedStorage:FindFirstChild("ZombieEvent")
    Event.OnClientEvent:Connect(function()
        player.PlayerGui.ZombieGui.Frame.Visible = true
        wait(3)
        player.PlayerGui.ZombieGui.Frame.Visible = false
    end)
    

    然后在你的僵尸脚本中,你会发出这样的信号:

    -- tell everyone to show the screen
    local Event = game.ReplicatedStorage:FindFirstChild("ZombieEvent")
    Event:FireAllClients()
    

    【讨论】:

    • 非常感谢!它现在完全按照我想要的方式工作!
    猜你喜欢
    • 2020-05-15
    • 1970-01-01
    • 2015-04-22
    • 2021-12-15
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    相关资源
    最近更新 更多