clmingxx 2020-02-28 15:02 采纳率: 0%
浏览 919

求助:Unity VR的UI问题

开发VR场景过程中
在**电脑调试**时效果如下:图片说明

图1

UI显示正常

射线检测会将FallBack小球放置于击中点

通过碰撞盒检测加载进度条并依照进度触发按钮或勾选框效果

而在**USB调试或真机测试**时效果如下:

图片说明

图2

UI显示没有遮挡效果

射线检测会将FallBack小球放置于击中点但不能加载进度条(图中为测试进度条设置最低进度10%)

代码:

if (Physics.Raycast(ray, out hitInfo, 100F))
        {
            sp.transform.position = hitInfo.point;
            //Debug.Log("UI层:"+ results.Count);
            if (hitInfo.transform.tag.Equals("货物"))
            {
                P_ring.GetComponent<Image>().color = Color.green;
                if (loading() >= 1)
                {
                    hitInfo.transform.position = cao_p.transform.position;
                    P_ring.GetComponent<Image>().fillAmount = 0;

                }
            }
            else if (hitInfo.transform.tag.Equals("地面"))
            {
                //P_ring.GetComponent<Image>().color = Color.grey;
                if (loading() >= 1)
                {
                    head.transform.position = new Vector3(hitInfo.point.x, head.transform.position.y, hitInfo.point.z);
                    P_ring.GetComponent<Image>().fillAmount = 0;

                }
            }
            else if (hitInfo.transform.tag.Equals("标签"))
            {
                P_ring.GetComponent<Image>().color = Color.yellow;
                //Debug.Log("标签");
                if (loading() >= 1)
                {
                    hitInfo.transform.parent.parent.gameObject.GetComponent<货架>().setoff();
                    P_ring.GetComponent<Image>().fillAmount = 0;

                }
            }
            else if (hitInfo.transform.tag.Equals("可触发"))
            {
                P_ring.GetComponent<Image>().color = Color.white;
                //Debug.Log("可触发");
                if (loading() >= 1)
                {
                    //hitInfo.transform.parent.parent.gameObject.GetComponent<货架>().setoff();
                    if (hitInfo.transform.name.Equals("Checkmark"))
                    {
                        hitInfo.transform.parent.parent.GetComponent<Toggle>().isOn = !hitInfo.transform.parent.parent.GetComponent<Toggle>().isOn;
                    }
                    else if (hitInfo.transform.name.EndsWith("按钮"))
                    {
                        hitInfo.transform.GetComponent<Button>().onClick.Invoke();
                    }
                    P_ring.GetComponent<Image>().fillAmount = 0;

                }
            }
            else
            {
                P_ring.GetComponent<Image>().fillAmount = 0.1f;
            }
            //Debug.Log("Shoot:" + hitInfo.transform.name);//loading();
        }

得出信息如下:
1. 射线在两种情况下都能检测到附加在UI组件上的盒型碰撞盒
2. 在USB调试或真机测试时不能检测碰撞盒所属gameobject的tag
3.在USB调试或真机测试时UI显示出现如图2所示问题
附(可能有用的其他信息):
相关UI组件碰撞盒略大以保证其被检测
相关UI组件的layer由UI改为default

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
    • ¥15 lammps拉伸应力应变曲线分析
    • ¥15 C++ 头文件/宏冲突问题解决
    • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
    • ¥50 安卓adb backup备份子用户应用数据失败
    • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
    • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
    • ¥30 python代码,帮调试,帮帮忙吧
    • ¥15 #MATLAB仿真#车辆换道路径规划
    • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建