【问题标题】:OnMouseOver works differently on same objectsOnMouseOver 在相同对象上的工作方式不同
【发布时间】:2018-09-20 13:24:40
【问题描述】:

我是 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 个单元,但不适用于第三个。

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

谢谢!

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    我刚刚使用 2d 盒子精灵在我的游戏中测试了你的代码,它运行良好。

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

    您可能想尝试一些方法来调试它。

    • 首先确保已附加BoxCollider2DRigidbody2D
    • 确保没有任何东西覆盖场景中的盒子。

    当我在游戏的某个方面遇到问题时,我会尝试将其分解为最简单的组件。尝试制作一个除了盒子之外什么都没有的场景并尝试它,如果这不起作用,请尝试将脚本附加到非预制对象上。

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

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

    【讨论】:

    • 很好的解释。你提到在一个空的场景中尝试它,我想补充一点,也许一些“不可见”的物体正在“细胞”的路上。我建议用鼠标检查raycast2D 哪个对象在路上。
    • 我发现了问题:我有一个背景精灵,它带有一个与我的单元格相同的 Z 级别的盒子碰撞器。感谢您仅使用一个尽可能简单的示例进行调试的建议,它有帮助!
    猜你喜欢
    • 2017-06-23
    • 1970-01-01
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 2014-09-20
    相关资源
    最近更新 更多