Breaking out of the right loop
im trying to only add a card to my hand if it doesnt already exist, this is the code i use:
public List<Card> playerHand = new List<Card>();
public void LoadCards ()
{
Debug.Log("Loading Cards!");
for (int i=0; i < this.transform.childCount;i++)
{
foreach (Card card in playerHand)
{
if (this.transform.GetChild(i).GetComponent<Card>() == card)
{
break;
}
}
playerHand.Add(this.transform.GetChild(i).GetComponent<Card>());
}
}
The problem is that my break just brings the loop back to the foreach, while i need it to go back to the for loop to make sure i dont add dublicate cards
Comment
Best Answer
Answer by ElDo · Nov 14, 2015 at 05:52 AM
probably Change your code to:
public List<Card> playerHand = new List<Card>();
public void LoadCards ()
{
Debug.Log("Loading Cards!");
bool bFound=false;
for (int i=0; i < this.transform.childCount;i++)
{
foreach (Card card in playerHand)
{
if (this.transform.GetChild(i).GetComponent<Card>() == card)
{
bFound=true;
break;
}
}
if(bFound)break;
playerHand.Add(this.transform.GetChild(i).GetComponent<Card>());
}
}
no. your code doesn't work as expected because you Exit the Loop after adding the Card which is what he didn't wanted to :-P
lol ok you got me, guess I wasn't paying attention enough.
Your answer
![](https://koobas.hobune.stream/wayback/20220612045006im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
For loop not working 1 Answer
Nested For loop Grouping 0 Answers
HOW to USE LOOPS withinh Update??? 0 Answers
Nested coroutines 0 Answers
Nested For Loop Question 1 Answer