与 NPC 的对话完成后需要更改对象的透明度

Need to change transparency of an object once dialog with NPC completes

我是 Roblox 脚本的新手,我试图在与 NPC 开始对话后将武器从透明变为可见。

我在属性里把武器"Autohyperlaser"的透明度设置为1所以默认是透明的。我有一个名为 "Weapon_holder" 的 NPC,它有一个 Dialog 和 DialogChoice 子项。所以层次结构是:

workspace.Weapon_holder.Head.Dialog.DialogChoice

我在具有以下代码的 DialogChoice 对象下创建了一个脚本:

local Dialog = script.Parent

Dialog.DialogChoiceSelected:Connect(function(Player, Choice)
workspace.Autohyperlaser.Handle.Transparency = 0
end)

我希望 workspace.Autohyperlaser.Handle 的透明度在选择任何对话框选项后从 1 变为 0。但是,枪仍然是透明的,因此脚本不正确或未被调用。我怎样才能让它工作?

DialogChoiceSelected 事件只能在客户端触发。这是一个事件 a Dialog, not DialogChoice. And you have to use it in a LocalScript 因为事件只是客户端的。您可以通过将 LocalScript 放入 StarterPlayer>StarterCharacterScripts 或通过将其放入 StarterPlayer>StarterPlayerScripts 将 LocalScript 放入角色,因为如果 LocalScripts 是这些或任何其他玩家后代的后代,则 LocalScripts 只会 运行对象。

对于代码,您只需更改对话框变量:

local Dialog = workspace.Weapon_holder.Head.Dialog --Since it is an event of a Dialog

Dialog.DialogChoiceSelected:Connect(function(Player, Choice)
workspace.Autohyperlaser.Handle.Transparency = 0
end)

如果 LocalScript 位于正确的位置,现在应该触发它。