• unity 针对UI的射线穿透的两种方式



    在做背包物品的拖动,以及技能快捷键的拖动设置时,都涉及到了针对UI的射线穿透问题.在处理这两个应用场景时,我采用了不同的UI射线穿透方式.

    方法一

    主要是用到了 IsRaycastLocationValid(Vector2 sp, Camera eventCamera) 这个函数.具体的介绍请移步官网.

    一句话介绍它的主要功能,是用来设置当前脚本所对应的UI是否被射线检测. 因为我针对背包物品拖动所写的脚本是绑定在物品自身的,所以这个函数就很适用啦.

    当然,它的主要应用场景不是这个.最常见的是针对不规则图片,以及叠加的图片.下面有两个博文介绍:
    针对叠加图片
    针对不规则图形

    方法二

    当你想要拖动的UI图形不是当前脚本所绑定的物体时,该怎么办? 除了重写脚本之外,我们还可以使用 CanvasGroup 组件来控制射线穿透.CanvasGroup 的具体介绍也请移步官网.

    CanvasGroup 下的 Block Raycasts 可以用来控制组件对应物体的所有子物体是否被射线穿透.当然,因为它的威力太大,所以最好是用一个不带任何子物体的空物体管理,需要时我们再把UI绑定到该空物体上.

    反思

    以上是我在学习过程中总结的一点经验.学得越深入,越发现其实所有的问题都是很简单的.比如以上的应用场景,说白了就是针对射线穿透的控制.如果能对API很熟悉,甚至对原理也十分了解,那么解决这种问题就不在话下了.

  • 相关阅读:
    数字证书编码ASN.1
    Exp3免杀原理
    Exp2后门原理与实践
    docker版mongodb数据同步到elasticsearch
    《哪位大佬来指正一下?》 回复
    数学吧 《哪位大佬来试一下》
    轮子滚动问题
    tinycthread
    C内存管理
    CenterNet:Objects as Points论文精读
  • 原文地址:https://www.cnblogs.com/ChanWunsam/p/10018310.html
Copyright © 2020-2023  润新知