• Hololens 2 新建自定义按钮


    官方链接地址

    1、创建Cube
    2、添加PressableButton脚本,并点击AddNearin…
    在这里插入图片描述
    3、把Cube拖入到MovingButtonVisuals变量中
    在这里插入图片描述

    4、点击NearInteractionTouchable组件(这个组件是添加和上一个脚本绑定的,自动添加上来的)上的Fix…
    在这里插入图片描述
    5、这个时候选着Cube 会出现色彩块,勾选PressableButton–MMakePlanesEditable,可以调整色彩块的位置,
    在这里插入图片描述
    6、色彩块是表示的是当手指按下时 物体被推动的距离,对应PressableButton–PressSettings属性,也可以通过调整属性来设置距离
    在这里插入图片描述
    7、这个时候运行一下效果

    hololens 2 自定义按钮 手势按下效果

    然后可以添加手势按下、触摸、触摸结束、按下结束 这个四个事件,这四个事件只是手指触碰到触发的事件,使用射线点击并不能触发
    在这里插入图片描述

    8、添加视觉反馈效果,新建一个材质球,设置如下图,然后运行,射线在在cube上时,有光晕效果

    在这里插入图片描述
    在这里插入图片描述
    9、添加Interactable脚本,设置如下
    在这里插入图片描述
    10、点开Interactable–Themen,可以设置射线在物体上时显示的颜色,点击时显示的颜色,设置点击时物体推动的距离

    在这里插入图片描述
    11、设置射线交互的事件
    在这里插入图片描述

    注意:PressableButton脚本 的事件是手碰到物体时才会触发,
    Interactable脚本的事件射线点击时才会触发

    动态事件添加的代码

      public class BaseOnClick : MonoBehaviour
      {
          protected PressableButton button;
          protected Interactable interactable;
        
          void Start()
          {
              button = this.GetComponent<PressableButton>();
              interactable = this.GetComponent<Interactable>();
             
            TouchBegin();
            TouchEnd();
            ButtonPressed();
            ButtonReleased();
          }
        
    
         
         
          public void TouchBegin()
          {
              button.TouchBegin.RemoveAllListeners();
              button.TouchBegin.AddListener(() =>
              {
                 Debug.Log("手指触碰时")
    
              });
          
          }
          public void TouchEnd()
          {
              button.TouchEnd.RemoveAllListeners();
              button.TouchEnd.AddListener(() =>
              {
                   Debug.Log("手指触碰结束")
              });
          }
          public void ButtonPressed()
          {
             
              button.ButtonPressed.RemoveAllListeners();
          
              button.ButtonPressed.AddListener(() =>
              {
                
                   Debug.Log("手指按下")
              });
              interactable.OnClick.RemoveAllListeners();
              interactable.OnClick.AddListener(() =>
              {
                  
                  Debug.Log("射线按下")
              });
       
    
          }
          public void ButtonReleased(Action clickAction)
          {
              button.ButtonReleased.RemoveAllListeners();
              button.ButtonReleased.AddListener(() =>
              {
                 Debug.Log("手指按下结束")
              });
    
          }
    
    
         
      }
    
  • 相关阅读:
    [附源码]java毕业设计疫情防控期间网上教学管理
    单机部署ELK + Filebeat 收集应用日志
    java基于springboot的高校图书馆座位预约
    基于S32K144实现TPS929120的基本控制功能
    js 实现图片纵向拼接并下载
    R语言ggplot2可视化:可视化分面散点图的标签数据为词云、使用ggrepel包的geom_text_repel函数避免词云标签互相重叠
    Docker和K8S的区别
    用户级线程和内核级线程
    系统架构7个非功能性需求
    渗透测试-Python安全工具编程基础
  • 原文地址:https://blog.csdn.net/o_ojjj/article/details/139273983