尝试调用实例值

这个错误一直在输出中弹出,我不确定我做错了什么。

这是代码:

function bullet() --给我错误的函数
    bullet = Instance.new("Part") --实例
    bullet.Size = Vector3.new(1,1,1)
    bullet.Position = script.Parent.Position
    bullet.Parent = workspace
    bullet.Velocity = script.Parent.CFrame.LookVector * 90
    bullet.CanCollide = false
    --我不认为把脚本在一定时间后禁用再启用会起作用
end

script.Parent.Parent.Activated:Connect(function() --脚本在工具中
    bullet() --出现错误的地方
    --奇怪的是,我已经创建了像"explode()"这样的函数,就像这样工作并且没有任何错误
    --很确定这是一个 Roblox 问题,但我不确定
    --需要帮助
end)

错误: "Workspace.Tool.Handle.Script:12: 尝试调用实例值"

原文链接 https://stackoverflow.com/questions/71149907

点赞
stackoverflow用户18227946
stackoverflow用户18227946

尝试将 bullet 函数中的子弹变量命名为除 bullet 以外的其他名称,或者更改函数的名称。

2022-02-16 22:13:47
stackoverflow用户18227820
stackoverflow用户18227820

你尝试过修改函数或变量的名称吗?也许那就是问题所在。

试试这个:

function CreateBullet() --给我出错的函数
    bullet = Instance.new("Part") --实例
    bullet.Size = Vector3.new(1,1,1)
    bullet.Position = script.Parent.Position
    bullet.Parent = workspace
    bullet.Velocity = script.Parent.CFrame.LookVector * 90
    bullet.CanCollide = false
end

script.Parent.Parent.Activated:Connect(function()
    CreateBullet()
end)

如果这个方法不行或者我没有帮到你,我很抱歉。

2022-02-16 22:39:59
stackoverflow用户2858170
stackoverflow用户2858170

我非常确定这是一个Roblox的问题,但是我不确定

不是你的代码导致的。

你定义了一个名为 bullet 的全局函数。

function bullet()
-- more code
end

在该函数中的第一件事是

bullet = Instance.new("Part")

这样做相当于将 bullet 赋值为 Instance.new("Part") 的返回值。

让我们第一次调用 bullet() 函数。

现在该函数被执行,bullet 成为了一个实例。它不再是一个函数。

现在如果我们第二次调用 bullet,我们会得到错误:

"Workspace.Tool.Handle.Script:12: attempt to call a Instance value"

所以 bullet 基本上覆盖了自己,所以无法再次调用。

为了避免这种情况,只需使用不同的名称。然后您应该考虑作用域。如果您想在每次调用bullet时创建一个新的子弹,则需要将该 Instance value 变量做成本地变量,否则将在每次调用该函数时都覆盖相同的全局bullet变量。

尝试像这样:

function SpawnBullet()
    local bullet = Instance.new("Part")
    bullet.Size = Vector3.new(1,1,1)
    bullet.Position = script.Parent.Position
    bullet.Parent = workspace
    bullet.Velocity = script.Parent.CFrame.LookVector * 90
    bullet.CanCollide = false
    return bullet
end

script.Parent.Parent.Activated:Connect(function()
    SpawnBullet()
end)
2022-02-17 07:53:58