如何使用 Lua 更新框架大小?

基本上,我的 GUI 存在问题。它应该在需要时收缩,但由于某种原因,我无法让它这样做。

我试图查看 框架大小 设置,然后查看连接程序和远程事件中的问题。我也没有找到服务器的问题。 我是否做错了什么?如果是的话,是否有其他方法?或者只是编译器的错误?

我使用“StaminaUpdate”和“Sprinting”作为远程事件名称。 以下是客户端和服务器的代码:

local userInputService = game:GetService("UserInputService")
local replicatedStorage = game:GetService("ReplicatedStorage")
local players = game:GetService("Players")

-- 输入 true
userInputService.InputBegan:Connect(function(input)
    if input.KeyCode == Enum.KeyCode.LeftShift then
        replicatedStorage.Events.Sprinting:FireServer("True")
    end
end)

-- 输入 false
userInputService.InputEnded:Connect(function(input)
    if input.KeyCode == Enum.KeyCode.LeftShift then
        replicatedStorage.Events.Sprinting:FireServer("False")
    end
end)

-- GUI 更新
replicatedStorage.Events.StaminaUpdate.OnClientEvent:Connect(function(stamina, maxStamina)
    players.LocalPlayer.PlayerGui.Stamina.Bar.Size = UDim2.new(0, (maxStamina - stamina) * .2, 0, 17)
end)

-- 以下是服务器端代码

-- locals
local replicatedStorage = game:GetService("ReplicatedStorage")
local players = game:GetService("Players")
local RunService = game:GetService("RunService")

local maxStamina = 500
local staminaRegen = 5

local sprintingModifier = 1.8
local sprintingCost = 10

local sprintingPlayer = {}

players.PlayerAdded:Connect(function(player)
    local stamina = Instance.new("IntValue", player)
    stamina.Value = maxStamina
    stamina.Name = "Stamina"

    stamina.Changed:Connect(function(property)
        replicatedStorage.Events.StaminaUpdate:FireClient(player, stamina.Value, maxStamina)
    end)
end)

-- 输入 = false 或 true
replicatedStorage.Events.Sprinting.OnServerEvent:Connect(function(player, state)
    local humanoid = player.Character.Humanoid

    if state == "True" and humanoid:GetState() == Enum.HumanoidStateType.RunningNoPhysics and humanoid.MoveDirection.Magnitude > 0 then
        sprintingPlayer[player.Name] = humanoid.WalkSpeed
        humanoid.WalkSpeed = humanoid.WalkSpeed * sprintingModifier
    elseif state == "False" and sprintingPlayer[player.Name] then
        humanoid.WalkSpeed = sprintingPlayer[player.name]
        sprintingPlayer[player.Name] = nil
    end
end)

-- 调整耐力
RunService.Heartbeat:Connect(function()
    for index, player in pairs{players:GetCHuldren()} do
        local stamina = player.Stamina
        local name = player.Name

        if not sprintingPlayer[name] then
            if stamina.Value > maxStamina then
                stamina.Value = maxStamina
            elseif stamina.Value < maxStamina then
                stamina.Value = stamina.Value + staminaRegen
            end
        else
            if stamina.Value >= sprintingCost then
                stamina.Value = stamina.Value - sprintingCost
            else
                player.Character.Humanoid.WalkSpeed = sprintingPlayer[name]
                sprintingPlayer[name] = nil
            end
        end
    end
end)```
点赞