Hi guys, I am not too sure why my code is being funny. I am not understanding how an indexoutofbounds exception is even occurring.
I have a marks class with this declaration:
public Sprite markImg;
A markHand with a list of marks:
public List<Mark> markHand = new List<Mark>();
and I made an image controller script to update images on the screen,
under void start I get the error at the markImages[0] = player1Marks.markHand[0].markImg;
void Start () {
player1Marks = GameObject.Find ("MarkHand1").GetComponent<MarkHand>();
player2Marks = GameObject.Find ("MarkHand2").GetComponent<MarkHand>();
player3Marks = GameObject.Find ("MarkHand3").GetComponent<MarkHand>();
player4Marks = GameObject.Find ("MarkHand4").GetComponent<MarkHand>();
player1Hand = GameObject.Find("Hand1").GetComponent<Hand>();
player2Hand = GameObject.Find("Hand2").GetComponent<Hand>();
player3Hand = GameObject.Find("Hand3").GetComponent<Hand>();
player4Hand = GameObject.Find("Hand4").GetComponent<Hand>();
markSlots = new SpriteRenderer[12];
markImages = new Sprite[12];
markSlots[0] = GameObject.Find("Mark1").GetComponent<SpriteRenderer>();
markSlots[1] = GameObject.Find("Mark2").GetComponent<SpriteRenderer>();
markSlots[2] = GameObject.Find("Mark3").GetComponent<SpriteRenderer>();
markSlots[3] = GameObject.Find("Mark1Panel2").GetComponent<SpriteRenderer>();
markSlots[4] = GameObject.Find("Mark2Panel2").GetComponent<SpriteRenderer>();
markSlots[5] = GameObject.Find("Mark3Panel2").GetComponent<SpriteRenderer>();
markSlots[6] = GameObject.Find("Mark1Panel3").GetComponent<SpriteRenderer>();
markSlots[7] = GameObject.Find("Mark2Panel3").GetComponent<SpriteRenderer>();
markSlots[8] = GameObject.Find("Mark3Panel3").GetComponent<SpriteRenderer>();
markSlots[9] = GameObject.Find("Mark1Panel4").GetComponent<SpriteRenderer>();
markSlots[10] = GameObject.Find("Mark2Panel4").GetComponent<SpriteRenderer>();
markSlots[11] = GameObject.Find("Mark3Panel4").GetComponent<SpriteRenderer>();
//Here
markImages[0] = player1Marks.markHand[0].markImg;
markImages[0] = player1Marks.markHand[0].markImg;
markImages[1] = player1Marks.markHand[1].markImg;
markImages[2] = player1Marks.markHand[2].markImg;
markImages[3] = player2Marks.markHand[0].markImg;
markImages[4] = player2Marks.markHand[1].markImg;
markImages[5] = player2Marks.markHand[2].markImg;
markImages[6] = player3Marks.markHand[0].markImg;
markImages[7] = player3Marks.markHand[1].markImg;
markImages[8] = player3Marks.markHand[2].markImg;
markImages[9] = player4Marks.markHand[0].markImg;
markImages[10] = player4Marks.markHand[1].markImg;
markImages[11] = player4Marks.markHand[2].markImg;
updateImages ();
}
In the inspector the markHand already has the mark lists, therefore getting the element from mark, the sprite should received but isn’t.
Actual Error message:
ArgumentOutOfRangeException: Argument is out of range.
Parameter name: index
System.Collections.Generic.List`1[Mark].get_Item (Int32 index) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Collections.Generic/List.cs:633)
MarkImageController.Start () (at Assets/Scripts/MarkImageController.cs:114)