Roblox Lua: 在 print() 中间无法进行算术操作

我正尝试把 Rich 设置为一个变量,放在 print("You are" + print(Rich + 1) + "Rich") 的中间。这是在一个函数中使用的,所以每当玩家制造一个零件时,也就是在这种情况下是金钱,他们的财富就会增加一个:

    function createPart()
        local Rich = 0
        local myPart = Instance.new("Part")
        print("You are" + print(Rich + 1) + "Rich")
        myPart.Transparency = 0.5
        myPart. Anchored = true
        myPart.Position = Vector3.new(0,0,0)
        myPart.CanCollide = true
        myPart.Name = "lol" -- how to name a part after instance.new
        myPart.Parent = game.Workspace
    end
    createPart()

我被卡在这里了。请问我如何让它工作?

点赞
用户2860267
用户2860267

如果要增加变量,必须将其存储在更高的作用域中,否则它将在函数调用结束时被垃圾回收。

local Rich = 0
local function createPart()
    Rich = Rich + 1
    -- 打印消息
    -- 创建部件
end

至于打印出来,有三种不同的方式:

1)逗号分隔

print() 函数接受任意数量的参数,并将它们的值放在一起。

print("你有", Rich, "点 Rich")

2)字符串连接

在 Lua 中,.. 运算符用于字符串连接,而不是 + 运算符。

print("你有" .. tostring(Rich) .. "点 Rich")

3)字符串格式化

Lua 字符串库允许您通过指定变量应该放在字符串中的位置来格式化字符串。%d 可用于表示整数。

print(string.format("你有 %d 点 Rich", Rich))
2020-05-09 17:13:26
用户13641762
用户13641762

你距离你自己的解决方案非常接近。你的尝试中只有几个错误。首先,你需要一种跟踪玩家'财富'的方法。

如果你想在右上方的排行榜中显示它,你需要将一个'leaderstats'属性附加到玩家上。你可以通过以下方式实现:

-- 在代码的某个地方,连接到PlayerAdded事件。
game.Players.PlayerAdded:Connect(function(player)
    -- 在这里,向Player添加名为'leaderstats'的文件夹。
    -- 重要提示:它必须被命名为'leaderstats',全部小写
    local leaderstats = Instance.new('Folder')
    leaderstats.Name = 'leaderstats'

    -- 然后将财富添加到添加的玩家。为其命名是你喜欢什么就叫什么
    local richness = Instance.new('IntValue')
    richness.Name = 'Richness'
    richness.Value = 0

    -- 将此财富值的父项设置为leaderstats,以使其出现在右上角的排行榜中
    richness.Parent = leaderstats

    -- 创建此排行榜状态后,你需要将它的父项设置为玩家
    leaderstats.Parent = player
end)

现在所有玩家都将显示一个'财富'状态的排行榜。它们的值都将是0,直到你更新这个值。你可以使用客户端到服务器的'RemoteEvent'更新值。


第二个错误是你以错误的方式将内容打印到输出窗口中。当你将字符串连接在一起(称为串联),在Lua中你可以使用'..'.例如:

print('Here is a ' .. 'part of a ' .. 'string')

这将在'输出'窗口中输出以下内容:

Here is a part of a string

所以在你的代码中使用它,你需要输入以下内容:

print('You are ' .. (Rich + 1) .. ' Rich')
2020-05-29 23:39:04