Unity3d OnMouseOver在相同对象上的工作方式不同

Unity3d OnMouseOver在相同对象上的工作方式不同,unity3d,Unity3d,我是Unity的初学者,我刚刚发现了一个我不理解的行为 我有一个由精灵制成的预制“单元”,我希望当我的鼠标在它上面时它能改变颜色。 因此,我添加了一个BoxCollider2D组件以及以下脚本: 公共类单元格:单一行为 { //用于初始化 无效开始() { } //每帧调用一次更新 无效更新() { } 私有void OnMouseOver() { GetComponent().color=color.magenta; } 私有void OnMouseExit() { GetComponent(

我是Unity的初学者,我刚刚发现了一个我不理解的行为

我有一个由精灵制成的预制“单元”,我希望当我的鼠标在它上面时它能改变颜色。
因此,我添加了一个
BoxCollider2D
组件以及以下脚本:

公共类单元格:单一行为
{
//用于初始化
无效开始()
{
}
//每帧调用一次更新
无效更新()
{
}
私有void OnMouseOver()
{
GetComponent().color=color.magenta;
}
私有void OnMouseExit()
{
GetComponent().color=color.black;
}
}
然后,当我将“单元”预置拖放到场景中时,它将无法工作(当我的鼠标位于单元上方时,不会发生任何事情)

当我向场景中添加另一个“单元”预设时,也会出现同样的问题

但是,当我向场景中添加第三个“单元”预设时,该功能在前两个单元上有效,但在第三个单元上无效

我可能错过了什么,或者有一种行为我不知道,无论如何,如果有人知道为什么会发生这种情况,请告诉我


谢谢

我刚刚在游戏中使用2d方块精灵测试了你的代码,效果很好

视频>

您可能需要尝试一些方法来调试它

  • 首先确保有一个
    boxCollizer2D
    Rigidbody2D
    附件
  • 确保场景中没有任何东西覆盖盒子
当我在游戏的某个方面遇到问题时,我会尝试将其分解为最简单的部分。试着制作一个场景,除了盒子里什么都没有,然后试着去做。如果没有效果,试着把纸条附加到一个非预制对象上

尝试添加
Debug.Log(“鼠标输入”)
到subs以检查是否在回车时检测到鼠标,如果检测到鼠标,则可能是渲染器工作不正常


试试这些方法,如果它们不起作用,请告诉我,我很乐意继续尝试解决。

很好的解释。你提到在一个空的场景中尝试,我想补充一点,也许一些“看不见的”物体正在“细胞”的路上。我建议用鼠标检查哪一个物体正在移动。我发现了问题:我有一个背景精灵,它有一个盒子碰撞器,与我的细胞处于相同的Z级。感谢您的建议,使用尽可能简单的示例进行调试,这很有帮助!