官方链接地址
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("手指按下结束")
});
}
}