美文网首页
HoloLens开发手记 - UI搭建

HoloLens开发手记 - UI搭建

作者: Zhansongtao | 来源:发表于2016-12-09 17:41 被阅读2222次

    使用UGUI


    本文主要讲述在unity中使用UGUI 进行 2D UI的搭建,以一个简单的demo示例,在HoloLens上进行button的触发实现cube的随机颜色变换。

    1.新建一个unity工程,从HoloToolKit中添加Main Camera、Cursor组件

    Main Camera在Holotoolkit -> Utilities -> Prefabs中可以找到;
    Cursor在Holotoolkit -> Input-> Prefabs中可以找到,cursor对象中包含了CursorManager.cs脚本组件

    2.新建一个空物体,命名为Manager,在Manager对象上添加GazeManager.cs 、GestureManager.cs脚本组件,为应用添增凝视和手势特性。

    同时可以加上HandManager.cs脚本组件,并在Holotoolkit -> Input-> Prefabs中的HandDetectedFeedback预制体拖拽至Manager对象作为其子物体,为应用添加手势检测反馈。

    Paste_Image.png

    3.新增一个cube对象,并在此上添加一个CubeChangeColor.cs脚本

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class cubeChangeColor : MonoBehaviour {
    
        public static cubeChangeColor instance;
    
        void Awake()
        {
            instance = this;
        }
    
        public void OnChangeColor()
        {
            gameObject.GetComponent<MeshRenderer>().material.color = new Color(Random.Range(0, 255) / 255f, Random.Range(0, 255) / 255f, Random.Range(0, 255) / 255f);
            Debug.Log("OnChangeColor");
        }
    } 
    
    

    4.UI -> Image 新建一个Image,会自动生成一个Canvas 和一个EventSystem

    5.在EventSystem上添加Hololens输入模块。用以实现对按钮的点击操作等。

    6.Canvas设置

    • 修改Canvas相关参数,以适应控件在hololens视野中的大小。
      1)调整宽和高 (根据需要进行修改)
      2)调整缩放比例 (根据需要进行修改)
    • 将Canvas对象中Canvas组件中的Render Mode设置为World Space;
    • 将场景中的Main Camera拖拽至Canvas组件中的Event Camera;
    • 对Canvas添加碰撞器,并修改碰撞器Size,使凝视射线能够凝视到UI界面上

    7.设置Image的背景图片,这里其实和UGUI 常规做法相同,不加细述;

    8.UI->Button 新建一个Button,并修改对应的缩放参数

    9.给ButtonCanvas添加碰撞器

    修改碰撞器Size,使凝视射线能够凝视到Button以便Gesture手势能对其进行交互触发。其实此时Button就相当于了一个游戏对象

    给Button添加一个ButtonEvent.cs脚本组件:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class buttonEvent : MonoBehaviour {
    
        public void OnSelect()
        {
            cubeChangeColor.instance.OnChangeColor();
            Debug.Log("OnSelect");
        }
    }
    
    

    GestureManager.cs手势识别对凝视到的对象进行发送OnSelect()消息实现触发。因此在Button上编写OnSelect()函数,函数内容是调用cube对象的CubeChangeColor.cs脚本组件上的随机改变颜色的函数。以此实现在HoloLens中点击Button随机变换cube颜色。

    10.调试运行

    可以看到在Hololens的视野中出现了一个UI界面,并且Hololens凝视射线可以凝视在上面。点击Button实现cube的随机颜色变换。

    11.存在问题

    • 和某些技术群讨论,说有一种做法是直接在Button上的OnClick()进行触发事件的添加,就可以对Gesture手势的点击响应,不用特意编写OnSelect()方法来响应手势识别。对此实验后无果,此做法仍待考证;
    • 在Button上挂载ButtonEvent.cs脚本,实验表明脚本组件是否处于激活状态,都可以对OnSelect()进行触发,实现随机变换cube颜色;
    • 使用Unity联机Hololens调试时,可以看到点击button时,cube随机变换颜色效果可以实现,但此时控制台会报错,提示如下,但报错后不影响程序的继续运行。待解决...

    相关文章

      网友评论

          本文标题:HoloLens开发手记 - UI搭建

          本文链接:https://www.haomeiwen.com/subject/hqzemttx.html