求助: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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐