访问在另一个对象/脚本中发现的数据

在 Tabletop Simulator 中,我如何在对象之间交换信息?

比如说,有没有一种方法可以创建全局变量?

点赞
用户589924
用户589924

据我所知,Lua 脚本中没有全局变量,也无法创建公共对象属性。但是你并不会因此而束手无策。


你可以使用 .getVar / .getTable.setVar / .setTable 方法来获取和设置对象的属性。文档

例如,

对象 aaaaaa

function onChat(message, player)
    local o = getObjectFromGUID("bbbbbb")
    local x = o.getVar("x")
    x = x + 1
    o.setVar("x", x)
    print(x)
end

对象 bbbbbb

x = 0

你也可以使用 Global.getVar(...) 等方法。


另外,你可以创建一个方法,并使用 .call 来调用。这样可以提供更好的封装性。

例如,

对象 aaaaaa

function onChat(message, player)
    local o = getObjectFromGUID("82fbcf")
    local x = o.call("getX")
    x = x + 1
    o.call("setX", { value = x })
    print(x)
end

对象 bbbbbb

x = 0

function getX(args)
    return x
end

function setX(args)
    x = args["value"]
end

参数必须是一个表。

你也可以使用 Global.call(...) 方法。

2020-07-25 05:14:55