OnMouseOver对相同对象的工作方式不同

时间:2018-09-20 01:59:47

标签: unity3d

我是Unity的初学者,只是发现了我不理解的行为...

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

public class Cell : MonoBehaviour 
{

    // Use this for initialization
    void Start () 
    {

    }

    // Update is called once per frame
    void Update ()
    {

    }


    private void OnMouseOver()
    {
        GetComponent<SpriteRenderer>().color = Color.magenta;
    }

    private void OnMouseExit()
    {
        GetComponent<SpriteRenderer>().color = Color.black;
    }
}

然后,当我将“单元格”预制件拖放到场景上时,它将不起作用(当鼠标悬停在单元格上方时,什么也没有发生)。

当我在场景中添加另一个“单元”预制件时出现相同的问题。

但是,当我向场景中添加第三个“单元”预制时,该功能仅在第2个第一个单元上起作用,而在第三个单元上不起作用。

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

谢谢!

1 个答案:

答案 0 :(得分:1)

我刚刚使用2D盒子精灵在游戏中测试了您的代码,效果很好。

视频> https://youtu.be/6GP3-aV9g3g

您可能想尝试一些方法对其进行调试。

  • 首先确保附有BoxCollider2DRigidbody2D
  • 请确保没有任何东西可以遮盖场景中的盒子。

当我在游戏方面遇到麻烦时,我尝试将其分解为最简单的组成部分。尝试制作一个场景,除了盒子外什么也没有,然后尝试尝试一下,如果确实可行,请尝试将脚本安装到非预制对象上。

尝试将Debug.Log("Mouse Enter");添加到subs中,以检查是否在输入时检测到鼠标,如果正在检测到鼠标,则可能是您的恶意渲染器无法正常工作。

尝试这些方法,并让我知道它们是否不起作用,我很乐意继续尝试找出答案。