Unity AR 开发 | 射线点击UI设计

Posted by : on

Category : jekyll


@[TOC]

Unity AR 开发 | 射线点击UI设计

1. 导入资源包

  • Oculus Integration
  • ZED_Unity_Plugin_v2.8.1

2. 新建所需组件

  • Canvas - Button - Text
  • UIHelpers
  • ZED_Rig_Stereo
  • OVRCameraRig Remember: 停用LeftEyeAnchor, CenterEyeAnchor, RightEyeAnchor Hierarchy列表

3. 修改Canvas属性

修改Canvas属性

3.1.调整Position

3.2.调整Scale

3.3.Render Mode选择 World Space

因为这样是AR-friendly。

3.4.设置Event Camera

这里选择ZED_Rig_Stereo下的Left_eye或者Right_eye都可以,拖拽操作。

3.5.关闭Graphic Raycaster

3.6.添加OVRRaycaster脚本

3.7.将UIHelper/LaserPointer拖拽为OVRRaycaster脚本下的Pointer变量

4. 修改UIHelper/LaserPointer属性

修改UIHelper/LaserPointer属性

4.1.启用Line Renderer

4.2.修改Width»0.005

5. 修改UIHelper/EventSystem属性

修改UIHelper/EventSystem属性

5.1.将RightHandAnchor或者LeftHandAnchor拖入RayTransform变量

5.2.设置JoyPadClickButton变量

设置确认按键。 | 属性 | 解释 | |:—|:——-| |RayTransform| 哪个手柄发射射线。默认为左手柄| |Cursor| LaserPointer上的一个脚本,可以设置射线长度| |JoyPadClickButton|设置哪个键触发UI事件|

6. 验证测试

6-test

6.1.在Canvas/Button新建 InfoDisplay 脚本

public class InfoDisplay : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {

        
    }

    public void ShowDebug()
    {
        Debug.Log("Successful!!!点击成功了成功了");
    }
}

6.2.新建Click触发

6.3.执行ShowDebug函数

7. 应用

7.1.修改 InfoDisplay 脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class InfoDisplay : MonoBehaviour
{
    public Text infoText;

    public string infoString;

    // Start is called before the first frame update
    void Start()
    {
        infoText = GameObject.Find("Text").GetComponent<Text>();
    }

    // Update is called once per frame
    void Update()
    {

        
    }

    public void ShowDebug()
    {
        infoText.text = infoString;
        //infoText.text = "";
    }
}

说明:用AR手柄点击该Button之后Text会显示相关说明


About Wenhao Yang

Engineering Ph.D. Candidate with experience in human-robot interaction, robotics manipulation, AR/VR. Strong background in Robotics and Simulation. Seeking a Research/Engineering position in the field of robotics or AR/VR.

Star