Hi, i am new in unity development and i am developing a card game on unity. My question is how to add click event on each card. I have added 52 cards dynamically from Prefabs, index like 0…51. How to determine which card is clicked. OnMouseDown() is working but how to determine for which card its fired.
void AddCard(Vector3 position, int cardIndex, int positionalIndex)
{
if (fetchedCards.ContainsKey (cardIndex))
{
if (!faceUp)
{
CardModel model = fetchedCards [cardIndex].Card.GetComponent<CardModel> ();
model.ToggleFace (fetchedCards [cardIndex].IsFaceUp);
}
return;
}
GameObject cardCopy = (GameObject)Instantiate (cardPrefab);
//Debug.Log ("Prefab Name " + cardCopy.GetComponent<Button>().name);
//cardCopy.transform.SetParent(ParentPanel, false);
//cardCopy.transform.localScale = new Vector3(1, 1, 1);
//Button tempButton = cardCopy.GetComponent<Button>();
//UnityEngine.Events.UnityAction action1 = () => { this.btnClicked("testarg"); };
//tempButton.onClick.AddListener(action1);
//tempButton.onClick.AddListener((delegate { OnClickedButton(cardIndex);}));
//tempButton.onClick.AddListener(() => OnClickedButton(cardIndex));
//tempButton.GetComponentInChildren<Text>().text = "Button Numero " + cardIndex.ToString ();
/*tempButton.onClick.AddListener(() =>
{
Debug.Log("IT WORKS");
// Just handle the button clikc inside here
});*/
cardCopy.transform.position = position;
CardModel cardModel = cardCopy.GetComponent<CardModel> ();
cardModel.cardIndex = cardIndex;
cardModel.ToggleFace (faceUp);
SpriteRenderer spriteRenderer = cardCopy.GetComponent<SpriteRenderer> ();
if (reverseLayerOrder)
{
spriteRenderer.sortingOrder = 51 - positionalIndex;
}
else
{
spriteRenderer.sortingOrder = positionalIndex;
}
fetchedCards.Add (cardIndex, new CardView(cardCopy));
//Debug.Log("Hand Value = " + deck.HandValue ());
}