- Home /
The question is answered, right answer was accepted
How to skip certain objects in List, in a for loop? GUI related.
I have a UI system which instantiates and parents UI buttons depending on the object in the lists and the objects moved in and out of said lists. Also each time a object is added or taken away it goes through the same loop above to add new buttons to new objects or reorganize the list to stop open slots from showing up as buttons.
Now my problem is that I need this for loop to skip the objects in the list that have not been moved so it does not add an extra button for it.
It is better explained in the code.:
//The for loop which instantiates buttons for objects in the list. aka Inventory.
for(int crt = 0; crt < curUseObject.GetComponent<Crate>().baseObjeectList.Count; ++crt){
GameObject sct = (GameObject)(Instantiate(ivntSlot));
sct.transform.parent = guiCrt.transform.Find("MaskBox").transform;
// Then it sends the variables of the object and int to another method where the lists actually get changed and buttons deleted. T
CrateUse(sct, crt);
}
void CrateUse(GameObject cObject, int cIndex){
cObject.GetComponent<UnityEngine.UI.Button>().onClick.AddListener(() => {
plyrPlayerScript.CurrentInventoryList.Add(curUseObject.GetComponent<Crate>().baseObjeectList[cIndex]);
curUseObject.GetComponent<Crate>().baseObjeectList.Remove(curUseObject.GetComponent<Crate>().baseObjeectList[cIndex]);
// Now delete button,.....
Destroy(cObject);
//Then...
//Invoke the inventory to update again....
Invoke("ActivateInventory", 0.0f);
Invoke("ActivateCrate", 0.0f);
//This last part above is what makes it check the lists again and add any new buttons. What I need though is for it to not make the buttons for the objcts that were not moved or new.
//Can anyone help?? Thanks.
});
Answer by DeadKenny · Jun 29, 2015 at 05:32 PM
Lol.
So dumb. Such a simple thing. I had confused myself.
//Just add something like this under for loop... Checks for empty points and thus skips anything already there.
for(int i = 0; i < theArrayOrList.Count; i++) {
if(theArrayOrList[i] == null) {
continue;
}
Follow this Question
Related Questions
A node in a childnode? 1 Answer
loop GUI Buttons doesn`t respond 0 Answers
Adding Item object to Inventory List 0 Answers
Loop through a GameObject list based on the size of the list 1 Answer
Instantiating object from inventory 0 Answers