实体值
如何将数据存储在可从任何位置访问的实体中
在 nanos world 中,可以将数据存储在实体上。 任何包都可以访问这些值,你还可以确定该值是否会自动与客户端同步。
在 Base Entity 页面中,我们可以找到 :SetValue() 和 :GetValue() 方法的定义。 此外,还可以使用相同的方法在 Client 和 Server 静态类中全局存储值!
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() 来验证。