跳至正文
版本:latest - a1.147.x ⚖️

实体值

如何将数据存储在可从任何位置访问的实体中

在 nanos world 中,可以将数据存储在实体上。 任何包都可以访问这些值,你还可以确定该值是否会自动与客户端同步。

Base Entity 页面中,我们可以找到 :SetValue():GetValue() 方法的定义。 此外,还可以使用相同的方法在 ClientServer 静态类中全局存储值!

SetValue

在任何实体中,你可以使用 :SetValue(key, value, sync) 方法为该实体设置任何类型的值。 示例:

Server/Index.lua
-- 设置同步的 `my_value` 值
my_player:SetValue("my_value", 100, true)
提示

可以存储 any 类型的值,但不能存储 functions

如果将 sync 设置为 true,则该值将自动与所有客户端同步。 请注意,sync 是一个可选参数,仅在服务器端可用。

备注

Client.SetValue()Server.SetValue() 将不会有最后一个参数 sync。 因为该值仅存在于你正在设置的端。

GetValue

设置完成后,你可以使用 :GetValue(key, fallback) 访问任何实体的任何值。 如果将值设置为在客户端同步,则也可以在客户端获取这些值。 你可以传递一个额外的参数 fallback,如果键不存在,则会返回该参数!

-- 获取“my_value”的值,如果未设置值,则返回“0”
local my_value = my_player:GetValue("my_value", 0)
注意

请注意,存储实体本身并不会因为实体被销毁而使值置空,因此,在检索实体后,最好使用 :IsValid() 来验证。