BoxController
制作Box模型及素材准备
使用UGUI控制
使用DOTween plugin 控制UI,模型上的动画渐变效果
添加Gaze,Gesture,Input功能
Hololens应用中将物体转入Box中对需要操作的物体进行操作,可以对物体的操作更方便,快捷丰富功能上的交互,减少手势控制上的难度。
- 制作Box模型及素材准备
- 需要制作Box模型和UI按钮功能的图片素材
Box中的8个小正方体代表缩放操作 - 在制作Box时需要为box的6个面增加透明通道
- UI素材需要有Highlighted Sprite
- 凝视,点击状态下对应着的Cursor图标
- Tip 的帧动画图片,程序来循环加载图片。
- 注意旋转与缩放时的相对位置与绝对位置。
- 需要制作Box模型和UI按钮功能的图片素材
- 使用UGUI控制
- UGUI可以提供灵活多样的UI功能,Canvas具有世界坐标和屏幕坐标 ,方便了在世界坐标中模型信息动态的展示。
- SpritePacker提供了和NGUI中Atlas同样的图集制作功能,从而优化了Sprite占用资源,减少了DrawCall次数。
- EventSystem提供了丰富多样的方法能够准确的监听与响应UI功能上的事件
- 可以很方便的做一些遮罩裁切效果
使用DOTween plugin 控制UI,模型上的动画渐变效果
- Tween补间动画通过设置属性有多种运动类型,并附有补间动画的回调方法。可以完成动画过程中的不同事件。
- 其动画效果可以不受Time.Scale的影响
添加Gaze,Gesture,Input功能
- 搭建好Hololens开发环境,设置好Camera,添加Gaze,Gesture组件,Cursor预制物,在EventSystem下需要绑定HololensInputModule组件.
- Gaze: OnGazeLeave, OnGazeEnter中增加方法
- Gesture: onClick.AddListener,EventTrigger回调UnityAction事件或者是
Hololens封装好的OnSelect函数中写点击后的响应事件。使用BaseEventData可以监听到按钮按下与抬起事件。
Tips
- 1.使用SpritePacker打包图集的时候,将图集制作成prefab再放入Resources文件夹中,进行动态加载。
- 2.为了在Hololens中显示Cursor图标,需要在Canvas下设置画布的碰撞区域,或者在按钮的背景单独添加碰撞区域。
- 3.Sprite通过选中 Generate Mip Maps CheckBox来消除在3D空间中旋转移动出现的锯齿模糊。但会增加内存的消耗
- 4.增加Canvas下Canvas Scaler组件中Dynamic Pixels Per Unit值可以有效解决3D 中Sprite Text不清晰现象。还可以预生成离散的SDF,通过修改O(n2)算法,n x n像素的图像来生成有号距离场增强在3D中文本显示的清晰度.
- 5.使用UnityAction时Button组件下的Navigation枚举值设置为Automatic来监听点击 事件的按下与抬起 。如果枚举值为none,则会报空引用错误。