Unity ui点击穿透解决方案

问题

    项目中需要让模型可以点击,再使用的时候发现当模型被ui遮挡以后,点击ui的时候,模型能被触发点击事件,造成不必要的麻烦.

方案一

     EventSystem.current.IsPointerOverGameObject()
    通过查询发现unity其实给与了一个解决这种冲突的函数,能够让我们知道当前点击是否点击在了ui之上.所以直接上手测试.悲催的是使用该方法在pc端能够正常检测,一旦到了移动端就毫无反应,包括此函数的另外一个变种给定触摸触发的id号
    无奈只好放弃此种方法

方案二

    通过EventSystem 发射射线 通过射线的碰撞结果来检测是否点击到UI

public bool IsPointerOverUIObject(Vector2 screenPosition)
    {
        PointerEventData eventDataCurrentPosition = new PointerEventData(EventSystem.current);
        eventDataCurrentPosition.position = new Vector2(screenPosition.x, screenPosition.y);

        List results = new List();
        EventSystem.current.RaycastAll(eventDataCurrentPosition, results);
        return results.Count > 0;
    }

在使用时调用这个函数搞定在点击在UI上的检测,打完收工

你可能感兴趣的:(Unity ui点击穿透解决方案)