C# 禁用游戏对象的鼠标输入

C# 禁用游戏对象的鼠标输入,c#,unity3d,C#,Unity3d,Unity中有没有一种方法可以在不移除/禁用碰撞框的情况下禁用鼠标对游戏对象的输入 我想写一个脚本,在对象被按下一次后忽略它的鼠标输入。在脚本范围内这样做并不困难,但我希望该对象上的其他脚本忽略鼠标输入,而不修改所有其他脚本。这可以通过放置一个验证/过滤输入的脚本来实现。它可以是另一个脚本中的一个boolreveiceInput,每次输入时都会读取该脚本。因此,如果在第一次鼠标按下后,receiveInput的值为false,则其他值不会影响它。根据 对于属于“忽略光线投射”层的对象,不会调用此

Unity中有没有一种方法可以在不移除/禁用碰撞框的情况下禁用鼠标对游戏对象的输入


我想写一个脚本,在对象被按下一次后忽略它的鼠标输入。在脚本范围内这样做并不困难,但我希望该对象上的其他脚本忽略鼠标输入,而不修改所有其他脚本。

这可以通过放置一个验证/过滤输入的脚本来实现。它可以是另一个脚本中的一个bool
reveiceInput
,每次输入时都会读取该脚本。因此,如果在第一次鼠标按下后,receiveInput的值为false,则其他值不会影响它。

根据

对于属于“忽略光线投射”层的对象,不会调用此函数

因此,一种方法是切换对象层以忽略光线投射

this.gameObject.layer = LayerMask.NameToLayer("Ignore Raycast");

但是,如果您有其他依赖于光线投射的功能,这些功能也将被禁用(除非它们是在其他层中进行光线投射)。

您能澄清一下吗?我不知道你想要什么。我想制作一个脚本,在一次输入后(例如OnMouseDown())会忽略以下所有输入。不仅在该脚本的范围内,而且在附加到该游戏对象的其他脚本中。在不删除/禁用对象碰撞框的情况下完成所有这些。如果不编辑该对象上的现有脚本,我不明白这将如何工作。@CreativeMagic当然您必须编辑脚本,但您提到,您只是不想删除碰撞器。请阅读我问题的最后一句,你会看到,我确实说过我不想编辑所有其他脚本。请注意,该问题也未经编辑;)@创意魔术啊,我的坏:)。这是我的新信息。我一直认为你仍然需要过滤光线投射中的层。我不认为光线投射总是需要层。我认为它有一个默认层,你可以覆盖它。此外,OnMouseDown是由Unity正在执行的光线投射触发的,因此我认为您不能更改其层。我可能错了。