unity3d 我怎样才能阻止一个游戏对象方块碰撞器在一个下拉框UI元素下触发?

ff29svar  于 2022-11-15  发布在  其他
关注(0)|答案(2)|浏览(113)

我怎样才能阻止一个游戏对象方块碰撞器在一个下拉框UI元素下触发?
当我选择一个下拉列表项时,它也会向下拉列表下的游戏对象发送一个点击。
显然,在这种情况下,我们只希望单击一个UI元素。

cwtwac6a

cwtwac6a1#

您需要做的是在UI和Box Collider上的附加脚本上实现IPointerClick(这些接口中的一系列位于UnityEngine.EventsSystems中),使用这两个脚本将使用相同的事件系统,并将有效地阻止它。
您需要在主摄像头上添加一个PhysicsRaycaster

wmtdaxz3

wmtdaxz32#

因此,似乎没有“内置”或优雅的方法来实现这一点,因此其解决方法时间:这是我想出来的完美的作品。
将这两行放在update()中,以设置一个布尔标志来标记使用中的下拉框。

if (MyDropBox.transform.childCount != 3 && !MyDropBoxDown) { MyDropBoxDown   =  true;}    // Detect dropbox down and set a bool flag
  if (MyDropBox.transform.childCount == 3 && MyDropBoxDown)  { MyDropBoxDown   =  false;}   // detect dropbox up and unset a bool flag

然后你可以使用这个标志禁用盒子碰撞器,或者退出盒子碰撞器调用的函数,例如if(MyDropBoxDown){return},这样它就不会运行。

相关问题