• 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("手指按下结束")
              });
    
          }
    
    
         
      }
    
  • 相关阅读:
    2022年贵州省职业院校技能大赛(高职组)“软件测试”赛项竞赛规程
    零基础学python之流程控制
    15【存储过程和存储函数】
    Docker部署Nginx+FastDFS插件
    Matlab/Simulink Coder: 代码生成中的数据处理类型控制
    【JAVA进阶篇】时间与日期相关类
    C语言经典算法实例2:数组求素数
    FastRcnn理论合集
    制造业数字化转型-项目案例合集
    java计算机毕业设计学生选拔系统源码+mysql数据库+lw文档+系统+调试部署
  • 原文地址:https://blog.csdn.net/o_ojjj/article/details/139273983