我是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个第一个单元上起作用,而在第三个单元上不起作用。
我可能错过了一些东西,或者有一种我不知道的行为,无论如何,如果有人知道为什么会发生这种情况,请告诉我。
谢谢!
答案 0 :(得分:1)
我刚刚使用2D盒子精灵在游戏中测试了您的代码,效果很好。
视频> https://youtu.be/6GP3-aV9g3g
您可能想尝试一些方法对其进行调试。
BoxCollider2D
和Rigidbody2D
。当我在游戏方面遇到麻烦时,我尝试将其分解为最简单的组成部分。尝试制作一个场景,除了盒子外什么也没有,然后尝试尝试一下,如果确实可行,请尝试将脚本安装到非预制对象上。
尝试将Debug.Log("Mouse Enter");
添加到subs中,以检查是否在输入时检测到鼠标,如果正在检测到鼠标,则可能是您的恶意渲染器无法正常工作。
尝试这些方法,并让我知道它们是否不起作用,我很乐意继续尝试找出答案。