【Unity VR开发】结合VRTK4.0:创建一个按钮(Button)

语录:

天若阻我,我便撕裂这天!地若拦我,我便踏碎这地!


前言:

在3D空间中,我们往往需要设置空间按钮,通过交互器或指针与之交互的可碰撞来实现。接下来我们设置一个简单的按钮,可以使用对象指针进行选择,以启动按钮的点击,使用预制件表示我们的按钮,并使用可与按钮交互的空间指针的预制模块:Interactions.SpatialButton.ClickButton、Indicators.ObjectPointers.Straight。


正文:

步骤一:

        添加一个直线指针Indicators.ObjectPointers.Straight,用于按钮的交互:

 配置当前组件上面的属性:

 步骤二:

        我们需要让对象指针知道我们的调度程序,我们的调度程序知道我们的空间按钮。这意味着我们的对象指针和空间按钮之间的任何通信都将通过调度程序。这时,我们需要另外一个模块:Indicators.SpatialTargets.Dispatcher

Tilia -> Prefabs -> Indicators -> SpatialTargets -> Indicators.SpatialTargets.Dispatcher

 步骤三:

         我们需要将对象指针挂接到调度程序上,以便于对象指针和事件调用程序方法绑定:

分别选在要在发出事件时执行的函数:

触发:SpatialTargetDispatcher -> DoDispatchEnter

退出:SpatialTargetDispatcher -> DoDispatchExit

选择:SpatialTargetDispatcher -> DoDispatchSelect

步骤四:

       那么接下来我们需要创建一个空间按钮,使他可以与我们的直线指针进行交互:

 Tilia -> Prefabs -> Interactions -> SpatialButtons -> Interactions.SpatialButton.ClickButton

 如果我们是第一次使用,它会弹出来一个提示框,让我们加载对应的使用TextMesh Pro所必需的资源。

步骤五:

        现在,我们可以通过编辑组件上的属性来更改空间按钮的外观。

按钮可以处于两种主要状态,以及相关的嵌套子状态:

  • 启用样式:这些是启用按钮时用于按钮外观的样式(属性已选中)。Is Enabled
    • 已启用非活动:按钮已启用,但未悬停在按钮上,因此处于非活动状态。
    • 启用悬停:按钮已启用,对象指针悬停在此按钮上,但尚未选择该按钮。
    • 启用活动:按钮已启用,对象指针已激活按钮(即单击按钮)。
  • 禁用样式:这些是禁用按钮时用于按钮外观的样式(属性未选中)。Is Enabled
    • 禁用 非活动:按钮已禁用,但未悬停,因此处于非活动状态。
    • 禁用悬停:按钮已禁用,对象指针悬停在此按钮上,但尚未选择该按钮。

每个样式类型都是与按钮状态相关的属性集合,样式的嵌套属性类型为:

  • Is Applied:是否将样式应用于按钮状态。如果未选中此选项,则可以手动设置按钮内部元素的样式。
  • Button Text:当按钮处于相关状态时,按钮上显示的文本。
  • Font Size:要显示的文本的字体大小。
  • Font Color:文本字体的颜色。
  • Mesh Color:按钮处于相关状态时按钮网格框的颜色。

我们现在只是设置一个简单的按钮,我们只是要更改每个状态的文本,但将按钮的外观保留为默认设置。

从 Unity 层次结构窗口中选择游戏对象,然后在组件上更改以下属性:ClickButtonSpatial Button Facade

  • 已启用非活动 -> 按钮文本:I AM OFF
  • 启用悬停 -> 按钮文本:I AM OFF
  • 已启用活动>按钮文本:CLICKED
  • 禁用非活动 -> 按钮文本:DISABLED
  • 禁用悬停 -> 按钮文本:DISABLED

Play:

      当我们运行场景并激活对象指针, 将光束指向按钮,并注意按钮网格颜色如何变为悬停颜色。按键调用对象指针选择操作,该操作将依次单击我们的按钮,您将看到按钮在返回到默认状态之前快速更改为激活状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值