体验中的Tools 是用户可以在会话中装备的互动工具,例如剑、火箭发射器和魔法杖。您可以创建自定义在体验中的工具、将它们置于您的体验层级中,并写入脚本来实现它们对您的用户。
创建一个在体验中使用的工具
创建任何体验工具的第一步,您需要创建一个工具对象来包含所有使工具组成的元素。然后您可以添加其他实例到工具对象,包括零件和网格、音效和脚本提供功能。您还可以设置一个工具处理、调整工具握
创建工具对象
您可以使用以下步骤创建一个新的工具对象:
在 Explorer 窗口中,将鼠标悬停在 Workspace 上,然后单击 ⊕ 按钮显示列表。
选择 工具 在 交互 类别下。
添加零件或网格
在创建工具对象之后,您需要添加 Parts 或 MeshParts 到工具模型或 创建工具作为库存项目 无需零件和网格。 与其他模型一样,在经验中工具可以由多个
如果您想要创建一个工具,而不添加零件或网格,您可以创建它作为一个物品。
设置工具处理器
要允许用户在周围携带工具,您需要设置一个 Part 并将其命名为 Handle 为用户的手部添加。以下示例显示一个魔杖,其三个部分是发光的提示、主身体和红色的手柄。当用户装备魔杖时,他们将它拿在
请确保有一个名为 Part 的 Handle 。如果您命名多个 Parts 为 1> Handle1> ,工具将随机从其中选择一个作为手持附件点,可能会导致用户持有剑而不是镰刀。
调整工具握把方向
如果您的工具的握把方向不正确,例如拖动在地上或向后面,您可以通过调整 握把 属性在 外观 选项卡下调整。
由于每个工具的理想握把布置方向都不同,因此您需要通过将 握把向前 、 握把向右 和 握把向上 属性改变来尝试使您的工具的握把看起来正确。下面的例子显示了可能的错误和正确的握把为魔法杖:
您还可以使用 GripPos 属性让用户角色从他们的手中偏移工具。这可能对于制作应该放置在用户的肩膀上的工具很有用。
自定义工具图标
用户拥有的工具存储在其 Backpack 中。用户可以在背包上的 快捷栏上的工具图标 :
在工具的 属性 窗口中,使用以下属性来自定义工具在动画栏中的外观:
- TextureID — 工具标志。将图像 ID 设置为此属性与装饰图像按钮的方式相同。
- 工具提示 — 工具提示名称。
启用和禁用用户丢弃工具
默认情况下,用户可以按下 Windows 上的 返回键 或 Mac 上的 删除 来放下工具。您可以通过将工具的 CanBeDropped 属性设置为 1> force1> 来禁用此
创建工具作为库存物品
您还可以作为一个库存项目,而不是零件或网格作为一个在体验中等待用户输入的道具,例如一个魔法法术, которое用户角色可以点击其他人或触摸屏幕来施放它。 库存项目工具不需要手柄,因此您需要在工具的 属性 窗口中检查 需要握把 属性。
将工具添加到您的体验
体验工具已设置完毕后,您需要将其放置在体验的对象层次结构的适当区域。体验工具放置在体验的对象层次结构中取决于其预期使用。
默认开始工具
如果您想要所有用户都能从工具道具中启动,将其放置在 StarterPack 文件夹内。当任何用户生成时,系统将工具复制到他们的背包。
收藏品工具
如果您想允许用户随着移移动工具收集工具,您可以将工具放置在 工作区 在 Explorer 层级中。例如,您可能想要将超级火箭发射器放置在您的体验世界的难以达到区域。
已获得并购买的工具
如果您想将工具设置为奖励,当用户做些特殊事情或在体验商店中出售,请将工具放置在 服务器存储 在 Explorer 层级中,可以将工具克隆到用户的背包。
添加工具效果
在将您的工具添加到体验后,您可以添加脚本来启用用户使用工具做特殊效果。
工具特定事件
您可以使用以下四个工具指定条件来指示工具和用户使用它的状态,并将其作为工具脚本中的用户输入:
Tool:Equipped() : 发生于用户从背包中选择工具时。
Tool:Unequipped() : 发生在用户丢弃工具或切换工具时。
Tool:Activated() : 发生在用户开始激活工具时(单击、点击或按下 A 在游戏手柄上)。
Tool:Deactivated() : 发生在用户停止激活输入(释放按钮或触摸)。
虽然您可能不需要所有四个条件来设计工具,但您可以使用以下代码脚本作为基础工具脚本模板:
local tool = script.Parent
local function onEquip()
print("The tool is now equipped.")
end
local function onUnequip()
print("The tool is now unequipped.")
end
local function onActivate()
print("The tool is now activated.")
end
local function onDeactivate()
print("The tool is now deactivated.")
end
tool.Equipped:Connect(onEquip)
tool.Unequipped:Connect(onUnequip)
tool.Activated:Connect(onActivate)
tool.Deactivated:Connect(onDeactivate)
此代码示例假设脚本是工具对象的第一个级别的子脚本。如果脚本在其他地方,请调整在第一行(值为 tool )的路径,指向核心工具对象。
添加基础脚本
下面的例子显示了添加 Script 到服务器上,允许用户通过单击屏幕来切换白天和夜晚的魔法杖的步骤:
在 Explorer 窗口中,将鼠标对象在工具对象上,单击 ⊕ 按钮,插入一个 Script 。
复制以下代码并将其粘贴到您的 Script 中。
local Lighting = game:GetService("Lighting")local tool = script.Parentlocal function onActivate()if Lighting.ClockTime >= 8 and Lighting.ClockTime < 16 thenLighting.ClockTime = 20elseLighting.ClockTime = 8endendtool.Activated:Connect(onActivate)使用工具来测试您的体验,然后单击屏幕上的任何地方以切换白天和夜晚:
工具实现的不同类型的脚本
一些工具仅需要在服务器上实现 Script ,例如上一例,但大多数工具都需要在服务器上实现 Script 和客户端上的 LocalScript,其中每个都负责特定工具的某些方面。
在添加脚本之前,请确保您了解每种脚本输入之间的核心区别:
- 脚本 在整个体验世界中管理更改,例如解锁门和射击箭。
- 本地脚本 管理仅在用户设备上发生的事件,例如检测屏幕的位置或点击。
这里有一些示例工具和它们的行为由本地脚本或服务器脚本管理:
工具 | 本地脚本 | 服务器脚本 |
---|---|---|
创造者魔杖 | 检测屏幕上玩家触摸或点击的地方。 | 在游戏世界中的某个地点创建一个新的部分。 |
隐身斗篷 | 在装备斗篷时,暂时让玩家隐形对所有其他用户。 | |
超级弓 | 检测玩家是否激活工具(激活和关闭之间的时间)。 | 射出一个魔法箭头,力量更大或更小,根据检测到的激活时间。 |
了解有关不同类型的脚本的更多信息,请参阅脚本。
排查提示
在 Studio 中工具可能会很好,但在实时 Roblox 体验中可能会遇到问题。如果遇到此情况,请使用以下提示进行调试:
- 请确保每个 Script 和 LocalScript 只会处理它的预期功能。
了解有关 RemoteEvents 的更多信息,请参阅 远程事件和回调。