用于重叠3D对象的OnPointerDown

时间:2016-02-05 11:37:18

标签: c# unity3d

我的场景中有两个相同的3D对象。它们都有一个布尔属性: isSelected 。对于其中一个对象,isSelected为true。对于另一个 - isSelected是错误的。

两个对象都附加了一个脚本,它实现了IPointerDownHandler接口。

在游戏中的某个时刻,两个3D对象具有相同的坐标(绝对相同的坐标,对象彼此重叠)。如果我用鼠标单击一个对象,有没有办法让我预测触发OnPointerDown事件的对象是什么?我只想要使用isSelected == true来触发OnPointerDown事件。

有没有办法实现这个目标?我应该使用光线投射吗?感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:2)

你的问题似乎很容易让我误解你!

if (!isSelected) return;
.. your handling code ..

另一个想法是,在Unity中你应该真正使用很多组件,它们是事物的自然组成部分。不要忘记你的每个c#脚本确实是一个“组件”。

Google“Unity3d禁用basic tutorial

的组件”
yourComponent.enabled = false;

你说

  

我只希望用isSelected == true触发对象的OnPointerDown事件。

因此,也许只是使用布尔值关闭整个组件

另一个很酷的想法是: 使用布尔值关闭对撞机

Collider c = GetComponent<Collider>();
c.enabled = false;

那么你真的不会得到这个活动,你知道吗?

关于你的单独问题

  

有一种方法可以预测触发OnPointerDown事件的对象

由于您正在谈论3D对象,

1)如果一个更接近相机,那就是那个

2)如果他们处于真正相同的3D位置,这绝不应该发生:不,绝对没有办法说出来,这是“随机的”。