Roblox动画工具 - anim和Slash的含义

如何使用字面字符串“toolanim”和“Slash”引用工具的动画?

我只是想了解这些字符串是如何被引用的。

local function Attack ()
    local anim = Instance.new("StringValue")
    anim.Name = "toolanim"
    anim.Value = "Slash"
    anim.Parent = script.Parent
end
点赞
用户2858170
用户2858170

根据手册,默认的角色脚本将侦听名称为 toolanimStringValue

您可以创建此值并将其设定父级。设置 Parent 属性将使它成为该父级的子级。这时父级会知道有一个特定名称的 StringValue 并通过播放动画来回应。

然后该 StringValue 大多数情况下会被销毁,脚本将等待另一个实例响应。

这是 Lua 中的一个非常基本的实现:

local parent = setmetatable({}, {__newindex = function (t,k,v)

  if k == "Child" and v.Name == "toolanim" then
    print("parent: Hey someone gave me a child named toolanim!")
    print("parent: let's see what I need to do!")
    if v.Value == "Slash" then
      print("Slash!!!! <- fancy animation")
    end
  end
end})

local stringValue = setmetatable({},{__newindex = function (t,k,v)
  if k == "Parent" then
  print("stringValue: Someone gave me a Parent! Hey parent, I'm your child now!")
    rawset(t, "Parent", v)
    v.Child = t
  else
     rawset(t, k, v)
  end

end})

stringValue.Name = "toolanim"
stringValue.Value = "Slash"
stringValue.Parent = parent

这将创建一个父级对象,如果它有一个子级将运行一个 "动画",如果子级具有正确的属性。

另一个对象在获取父级并将自己设置为父级的子元素时将触发整个过程。

这是使用 Lua 的 __newindex 元方法实现的。如果不清楚,请参阅 Lua 参考手册

2021-08-13 10:14:50