2017-10-20 1 views
0

BoxCollider2D가 포함 된 GameObjects 배열이 있습니다. 나는 그들 중 하나를 클릭 할 때 어떻게 해야할지 모르겠다.MouseEvent && Colliders에서 MouseClick 감지

내게 색인을주세요. 예를 들어, 위치 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); 
    } 
} 

다른 방법을 알고 있다면 도와 주실 수 있습니까? 감사합니다. .

답변

0

MouseEventSystem은 기본 설정이 아닙니다. 그것을 사용하는 것에 의지합니까? 그렇다면 다음을 무시하십시오.

유니티 스터 만 사용하는 "가장 간단한"방법은 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 Ofc, 문제가 생길 경우를 대비하여 언제든지 물어보십시오.

희망이 있습니다.

+0

글쎄, 우리는 이미 문제를 해결했습니다. 어쨌든 감사합니다. if (Input.GetMouseButtonDown (0)) { CastRay(); } void CastRay() { Vector2 pos = new Vector2 (Input.mousePosition.x, Input.mousePosition.y); RaycastHit2D hit = Physics2D.Raycast (Camera.main.ScreenToWorldPoint (pos), Vector2.zero); if (hit) { // 원하는 것을 수행하십시오. } } –

+0

예 많은 방법이 있습니다. 당신을 위해 일하는 것을 발견하게되어 기쁘다. – yes

+0

:))) .... 감사합니다. –