在 LocalScript (Roblox LUA) 中创建抽象对象

Posted

技术标签:

【中文标题】在 LocalScript (Roblox LUA) 中创建抽象对象【英文标题】:Making an abstract object within a LocalScript (Roblox LUA) 【发布时间】:2017-06-15 23:39:40 【问题描述】:

我正在尝试在游戏中添加金钱系统。我添加了一个脚本,当将孩子添加到播放器中时,它会在 LocalPlayer 内的 NumberValue 中提供 2500 美元。但是我不确定如何在脚本中创建 NumberValue 并且我不能使用 instance.new 因为 NumberValues 是抽象的。有什么想法吗?

编辑-这是我尝试过的一些代码,它克隆了一个预先存在的 NumberValue

function AddPlayer()
    local Money = script.Parent.Money
    local Clone = Money:Clone()
    Clone.Parent = game.Players.LocalPlayer   
    Clone.Value = 2500
    Clone.Name = "Money"
end

game.Players.ChildAdded:connect(AddPlayer)

【问题讨论】:

能否请您显示一些您尝试过的代码?照原样没有多大意义。 嗯,没有代码可以显示,它现在几乎是一个空函数和一个函数连接 首先,打开FilteringEnabled 并且不要对这些东西使用LocalScripts。这应该在服务器端完成 好吧,我只是假设因为它是玩家的事情,所以应该使用本地脚本。我也不是很热衷于本地脚本。现在也可以了,谢谢! 在本地处理诸如 UI 和鼠标/按键事件之类的事情时使用 LocalScripts,在处理诸如货币之类的可怕重要事情时,请将其保持在服务器端,这样人们就无法利用您的游戏。 【参考方案1】:

我不知道NumberValues 是“抽象”是什么意思(澄清一下?)。但是应该没有什么可以阻止您使用Instance.new创建它

local Money = Instance.new("NumberValue")
Money.Name = "Money"
Money.Value = 2500

作为warspyking said,您应该在服务器上执行此操作,而you should have FilteringEnabled。

基本上用代码将普通脚本放在“Game.ServerScriptService”中:

game:GetService("Players").PlayerAdded:connect(function(player)
    local Money = Instance.new("NumberValue")
    Money.Name = "Money"
    Money.Value = 2500
    Money.Parent = player
end)

还需要注意的是,您应该使用PlayerAdded 而不是ChildAdded,因为PlayerAdded 仅在添加玩家时触发,而ChildAdded 也会在有人将垃圾放入Game.Players 时触发。

【讨论】:

以上是关于在 LocalScript (Roblox LUA) 中创建抽象对象的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用“已更改”索引编号 | Roblox Lua

(Roblox Studio)客户端-服务器-客户端通信不起作用

Lua 刷新脚本 (ROBLOX)

如何使用 lua 检查 Roblox 中是不是存在对象?

Roblox Lua开发

是否有更简单的方法在 Roblox (Lua) 上的父对象中查找对象