重叠的 2DColliders 防止“OnMouse”方法

问题描述 投票:0回答:0

我想通过提及我已经找到并实施了以下问题的解决方法(缩小预制碰撞器,以便按钮识别它们但鼠标没有识别它们)来作为序言。我问这个问题是因为,作为一名学习型开发人员,首先弄清楚究竟是什么导致了这个错误,以及将来如何预防它符合我的最大利益。

正如我所说,我是一名业余爱好者,正在尝试制作我的第一个非教程项目。游戏是 2D 的,有两个与我的问题相关的功能:

  • BoxCollider2D 对象的网格,带有使用“OnMouse”方法套件(例如 OnMouseEnter 高亮显示、OnMouseUpAsButton 触发点击效果等)为它们提供类似按钮功能的脚本
  • 一个由两个 BoxCollider2D 兄弟组成的预制件,一个碰撞体比按钮略小,另一个碰撞体是其兄弟碰撞体的三倍。这些是由另一个对象在网格中随机生成的。

问题是预制件与网格的棘手性相冲突,导致按钮仅在鼠标悬停在不与预制件重叠的条子上时才起作用。奇怪的是,这个问题只影响重叠按钮的some,看似随机。

我已经将按钮设置在比预制件更高的层上,并将它们的精灵设置在更高的顺序以防万一;这些都没有做任何事情。我尝试让生成器销毁并重新生成网格,但它不起作用,因为它出于某种原因禁用了所有子按钮的脚本和碰撞器。有趣的是,禁用和重新启用网格确实会重新激活一些受影响的按钮,但同样,它是随机的,哪些是固定的,哪些不是,并且由于某种原因它只能工作一次。

我目前的理论是预制件在按钮“上方”生成(尽管这是一个 2D 项目),这样鼠标与预制件而不是按钮进行交互。但这并不能解释为什么不是所有重叠的按钮都会受到影响。我想知道是什么导致了这种随机性,以及是否有可能让按钮碰撞器在 100% 的时间内优先于预制碰撞器。

没有提供代码,因为“OnMouse”函数的实际内容不相关。

unity3d mouseevent collision
© www.soinside.com 2019 - 2024. All rights reserved.