首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >告诉联合使用某个LayerMask来引发或不引发OnDrop (对于实现IDropHandler的类)

告诉联合使用某个LayerMask来引发或不引发OnDrop (对于实现IDropHandler的类)
EN

Game Development用户
提问于 2019-01-29 14:39:00
回答 1查看 336关注 0票数 1

我正在尝试制作一个可拖放的GameObject,它可以放在容器内,但是当我释放鼠标按钮时,即使鼠标在容器上(也是拖动的对象),OnDrop也不会在容器上引发。要使其工作,我必须选择拖动的GameObject在它的边缘,这样鼠标就在容器上,而不是当我释放鼠标按钮时可拖动的。

根据我所见,统一处理的拖放是基于Raycast的,而Raycast可以配置为忽略特定层中的对象,这要归功于LayerMask,问题是我找不到任何东西来应用LayerMask

有没有办法这样做,或任何解决办法,可以让掉落目标知道被拖到他身上?

EN

回答 1

Game Development用户

回答已采纳

发布于 2019-01-29 18:01:51

在某些组件上有一个称为Raycast Target的复选框,在CanvasGroup上有一个名为Blocks Raycasts的复选框。因此,当您释放拖动时,您的鼠标在您要拖动的对象之上。您可以取消正在拖动的对象上的复选框,这样光线投射就可以通过。如果您想要使用LayerMask,或者您想要投射多个目标,您可以为它创建一个自定义的光线投射解决方案和您自己的接口。

GraphicRaycaster.Raycast --这个例子解释了如何为光线投射创建自定义行为。您可以将其与OnDrop结合使用,但如果需要的话,我建议您自己编写。但在目前的系统下,这很可能是可以实现的。我打赌EventSystem所做的基本上是检查按钮按下,当按钮被按下/释放它的射线投射,如果对象点击实现IDropHandler,然后调用OnDrop。使用自定义系统,您可以拥有LayerMask,这将告诉您在光线投射时要击中哪一层。

票数 0
EN
页面原文内容由Game Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://gamedev.stackexchange.com/questions/167602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档