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

news2024/11/27 9:47:02

语录:

有人感激过你的善良吗,貌似他们只会得寸进尺。


前言:

        Toggle按钮是提供简单空间 UI 选项的另一种方式,在该选项中,按钮将保持其状态,直到再次单击它。这允许按钮处于激活状态或停用状态的情况,通过单击带有对象指针的按钮来切换每个状态。

       Interactions.SpatialButton.ToggleButton使设置变得非常容易。


正文:

步骤一:

       我们需要添加Interactions.SpatialButton.ToggleButton到场景中:

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

 添加完毕之后我们会发现,它与之前创建的Interactions.SpatialButton.ClickButton的组件属性一样,所以我们默认设置就好。如果您现在播放 Unity 场景,您将看到第一次单击带有对象指针的切换按钮会将切换按钮置于活动状态,它将保持活动状态,直到再次单击切换按钮。

 他们的不同之处在于Indicators.SpatialTargets.Target上面的Actions On Activate:

Interactions.SpatialButton.ClickButton->Indicators.SpatialTargets.Target->Actions On Activate->

 Interactions.SpatialButton.ToggleButton->Indicators.SpatialTargets.Target->Actions On Activate->

 他们的区别就在于Interactions.SpatialButton.ClickButton点击之后就会回复到初始状态,Interactions.SpatialButton.ToggleButton点击之后会显示点击后的状态,再进行一次点击才能恢复到初始状态。

步骤二:

      新的模块Interactions.SpatialButton.Group允许我们将场景空间按钮组合在一起,每个组都有自己的空间目标调度程序,这意味着我们可以限制哪些按钮可以控制其他组中其他按钮的状态,甚至让我们控制哪些对象指针可以与这些按钮组交互。

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

步骤三:

         我们需要前面创建的Interactions.SpatialButton.ClickButton和Interactions.SpatialButton.ToggleButton放到Interactions.SpatialButton.Group->Buttons下面即可。

步骤四:

       这时我们就不需要前面创建的 Indicators.SpatialTargets.Dispatcher(空间目标处理器),直接删除就可以了,这时,我们的对象指针现在不再设置为使用我们的按钮,因为我们删除了Indicators.SpatialTargets.Dispatcher(空间目标处理器)。我们确实在按钮组上使用了空间目标调度程序,但这意味着我们添加的每个新按钮组都意味着我们需要继续将对象指针事件挂接到每个新按钮组的每个空间目标调度程序。

       这时我们可以简单地设置一次对象指针来调用空间目标处理器,然后我们添加的任何新的空间目标调度程序都可以添加到空间目标处理器列表中:

Tilia -> Prefabs -> Indicators -> SpatialTargets -> Indicators.SpatialTargets.Processor

步骤五:

       然后将游戏对象拖放到组件的属性中的属性值中。

步骤六:

我们现在需要修复对象指针事件,因为以前它们会在我们刚刚删除的空间目标调度程序上使用事件侦听器进行设置,因此现在我们需要将对象指针事件挂接到新添加的空间目标处理器。

 Play:

        运行场景,您会注意到切换按钮的工作方式仍然相同,因此请按键激活对象指针并将光束指向切换按钮,然后按键将切换按钮置于激活状态。使用对象指针再次单击切换按钮将使切换按钮恢复到停用状态。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/402691.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

固态存储设备固件升级方案

1. 前言 随着数字化时代的发展,数字数据的量越来越大,相应的数据存储的需求也越来越大,存储设备产业也是蓬勃发展。存储设备产业中,发展最为迅猛的则是固态存储(Solid State Storage,SSS)。数字化时代,海量…

【ESP32+freeRTOS学习笔记之“ESP32环境下使用freeRTOS的特性分析(新的开篇)”】

目录【ESP32freeRTOS学习笔记】系列新的开篇ESP-IDF对FreeRTOS的适配ESP-IDF环境中使用FreeRTOS的差异性简介关于FreeRTOS的配置关于ESP-IDF FreeRTOS Applications结语【ESP32freeRTOS学习笔记】系列新的开篇 ESP-IDF对FreeRTOS的适配 FreeRTOS是一个可以适用于多个不同MCU开…

JavaWeb开发(三)3.6——代理模式

一、代理模式概述 1.1、代理模式的理解 参考人家的举例,感觉挺形象,容易理解: 就拿明星与经纪人的关系来说,明星就好比被代理类,明星只需要负责唱歌,表演或给粉丝签名等事务,而类似签合同&…

Jenkins从配置到实践

Jenkins从配置到实践 1 持续集成 Continuous integration(CI) 1.1 什么是持续集成? 持续集成Continuous integration(CI)是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员…

COLMAP

简介:在使用instant-ngp过程中需要使用COLMAP得到模型的必要输入,比如模型需要的相机外参我们就可以通过COLMAP中的sparse reconstruction稀疏重建得到;而对于depth map深度图我们则需要dense reconstruction稠密重建得到,下面我们…

STM32Cube STM32MP157 M4端CAN通讯实战

1、环境 开发系列:STM32MP157 开发软件:STM32CubeIDE 1.4.0 例程目的:在M4端实现CAN通讯 2、目的 近日,有客户需要在STM32MP157中的M4端实现CAN通讯,我也是初次在M4端编写CAN通讯代码,上网研究了其他人写…

从LeNet到ResNet:深入探索卷积神经网络

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

论文解读15——LightGBM: A Highly Efficient Gradient Boosting Decision Tree

目录1、文章贡献2、直方图算法Histogram(减少分裂点)3、基于梯度的单边采样算法GOSS(减少样本量)4、互斥特征捆绑算法EFB(减少特征)在上篇中提到,XGBoost算法的局限是它在寻找最优分裂点算法中需…

AidLux AI应用案例悬赏选题 | 电路板表面瑕疵检测

AidLux AI 应用案例悬赏征集活动 AidLux AI 应用案例悬赏征集活动是AidLux推出的AI应用案例项目合作模式,悬赏选题将会持续更新。目前上新的选题涉及泛边缘、机器人、工业检测、车载等领域,内容涵盖智慧零售、智慧社区、智慧交通、智慧农业、智能家居等…

正点原子裸机开发之C语言点灯程序

一. 简介 本文针对 IMX6ULL 的裸机开发的(即不带Linux操作系统的开发)。 主要分两部分的工作: 1. 配置 C语言运行环境 2. C 语言编写及运行 二. 配置C语言运行环境 配置 C 语言运行环境的工作分 三部分。如下: 1. 设置…

Nginx配置实例-反向代理案例一

实现效果:使用nginx反向代理,访问 www.suke.com 直接跳转到本机地址127.0.0.1:8080 一、准备工作 Centos7 安装 Nginxhttps://liush.blog.csdn.net/article/details/125027693 1. 启动一个 tomcat Centos7安装JDK1.8https://liush.blog.csdn.net/arti…

YonBuilder 应用构建全新入门指南

用友开发者中心以 YonBuilder 低代码开发为核心,提供可视化 低代码 全代码的一站式开发能力,企业组织和个人开发者可实现业务应用的快速开发。YonBuilder 基于用友 BIP 强大的中台支撑能力,在元数据驱动和运行框架的统一模型架构下&#xf…

Ethercat学习-GD32以太网学习

文章目录1、GD32F4以太网简介2、以太网模框图简介3、以太网主要模块介绍SMI接口RMII接口与MII接口DMA控制器4、以太网配置流程5、其他1、GD32F4以太网简介 GD32F4系列以太网模块包含10/100Mbps以太网MAC,数据的收发都通过DMA进行操作,支持MII&#xff0…

一个C#开发的开源的快速启动工具

更多开源项目请查看:一个专注推荐.Net开源项目的榜单 平常计算机安装软件比较多、或者工作涉及的文件比较多,很多人都会直接放在桌面,一方面不安全,还不容易查找,这时候我们往往,都会放在其他硬盘内&#x…

springboot项目yml文件中${}的使用

作用 项目启动时可以灵活的通过修改环境变量来替换配置中的值,如果没有传该环境变量时,就是用默认值; 格式:${自定义参数名:默认值} 代码举例,已开启应用的端口号为例: server:port: ${SERVER_PORT:960…

AI+人类,实现高效网络安全

导语 聊天机器人和生成式人工智能(如 ChatGPT)突然成为主流让很多人感到担忧。很多人开始担忧,人工智能取代人的时代已经到来。 幸运的是,事实并非如此。 更有可能的情况是,人类将与 AI 合作创建工作角色的混合模型。…

Mercedes-Benz EDI需求分析

作为奔驰的仓储服务提供商,企业A需要借助EDI实现仓储流程的自动化。奔驰将车存放在企业A处,由企业A将货物提供给4S店。整体业务流程中将通过EDI系统来进行业务数据的传输,今天的文章主要从奔驰EDI需求概览以及EDI项目业务流程两方面展开介绍。…

646. 最长数对链——【Leetcode每日刷题】

646. 最长数对链 给你一个由 n 个数对组成的数对数组 pairs &#xff0c;其中 pairs[i][lefti,righti]pairs[i] [left_i, right_i]pairs[i][lefti​,righti​] 且lefti<rightileft_i < right_ilefti​<righti​。 现在&#xff0c;我们定义一种 跟随 关系&#xff…

MySQL查询索引原则

文章目录 等值匹配原则最左前缀匹配原则范围查找规则等值匹配+范围查找Order By + limit 优化分组查询优化总结MySQL 是如何帮我们维护非主键索引的等值匹配原则 我们现在已经知道了如果是【主键索引】,在插入数据的时候是根据主键的顺序依次往后排列的,一个数据页不够就会分…

保姆级使用PyTorch训练与评估自己的MobileViT网络教程

文章目录前言0. 环境搭建&快速开始1. 数据集制作1.1 标签文件制作1.2 数据集划分1.3 数据集信息文件制作2. 修改参数文件3. 训练4. 评估5. 其他教程前言 项目地址&#xff1a;https://github.com/Fafa-DL/Awesome-Backbones 操作教程&#xff1a;https://www.bilibili.co…