MouseEvent&&检测碰撞器上的MouseClick

时间:2017-10-20 12:54:28

标签: c# unity3d mouseevent collider

我有一个包含BoxCollider2D的GameObjects数组。当我点击其中一个自我检测点击时,我不知道该怎么做。

我的意思是,给我一个索引。例如,我单击位置0上的对象,在控制台中我得到值0,在控制台中单击位置3中的对象。我得到了值3.

我试图创建一个对我有帮助的课程,但它没有用。

public GameObject[] ColorColliders;

void Start () 
{
    foreach (GameObject coll in ColorColliders)
        coll.GetOrAddComponent<MouseEventSystem>().MouseEvent += ColorClick;
}

private void ColorClick(GameObject target, MouseEventType type)
{
    if(type == MouseEventType.CLICK)
    {
        int targetIndex = System.Array.IndexOf(ColorColliders, target);
        Debug.Log(targetIndex);
    }
}

如果您了解其他方法,可以帮助我吗? 感谢。

1 个答案:

答案 0 :(得分:0)

MouseEventSystem不是统一默认值。你依靠使用它吗?如果是这样,请忽略以下内容。

最简单的&#34;只使用统一东西的方式就是只使用MonoBehaviour.OnMouseDown - 还有很多其他方法可以使用射线游戏。

您可能需要根据自己的需要调整以下内容,这只是一个简单的例子。只需将其放在相应的对象上,然后在检查器中指定索引即可。

using UnityEngine;

public class ColorSelector : MonoBehaviour {

    public int index;

    void OnMouseDown() {
        Debug.Log(string.Format("Color with index {0} was clicked.", index));
    }

}

另一种选择是使用Unity的内置EventSystem,请参阅手册和教程以获取更多信息。 https://docs.unity3d.com/Manual/EventSystem.html 如果您遇到麻烦,请随时询问。

希望我帮助过。

相关问题