How to return a value from an array of GameObjects?
I'm making a script that is supposed to dynamically understand how many areas there are that that will load another scene when activated. When SceneUpdate() is called at Awake(), I'd like it to find all game objects tagged by areaLoader and pay attention to Next_Level_Index, which always returns zero instead of noticing the one "areaLoader" that returns a value higher than 1.
void SceneUpdate()
{
GameObject[] controllers = GameObject.FindGameObjectsWithTag("areaLoader");
AreaController = new areaController[controllers.Length];
for (int i = 0; i < controllers.Length; ++i)
AreaController[i] = controllers[i].GetComponent<areaController>();
}
void Update ()
{
for (int i = 0; i < AreaController.Length; ++i)
Debug.Log(AreaController[i].Next_Level_Index);
for (int i = 0; i < AreaController.Length; ++i)
if (AreaController[i].Next_Level_Index > 1)
{
nextLevel = AreaController[i].Next_Level_Index;
}
}
I'm really confused about FindGameObjectsWithTag and understand they return an array, but how can I test that array for values that pass the if statement shown at the bottom?
Debug.Log(gameObject.activeSelf); returns as true on the child object in another scene as well.
I don't think i fully understand the situation
Next_Level_Index, which never returns a value
It's impossible for a variable not to return a value. This Debug.Log(AreaController[i].Next_Level_Index);
will always log out at least 0 ( if it's an integer, null if it's some nullable type). So if you don't get any output, it means AreaController
is empty so the line doesn't get called.
Have you tried Debug.Logging out the length of GameObject[] controllers
?
FindObjectsWithTag will only return objects from loaded scenes.
The tags I'm looking for are loaded yes, and I didn't say it right, it always returns zero ins$$anonymous$$d of noticing the one "areaLoader" that returns a value higher than 1. $$anonymous$$eanwhile the length is always zero as well, which is extremely confusing! Which leads me to think it's unable to find the gameobjects with tags.
Answer by Binary02 · Jul 21, 2016 at 06:09 PM
I fixed it, it turns out everything was fine but I just had to keep calling the initialization function by putting SceneUpdate in Update(It was only in awake before). I'll probably call this only when scenes are added in the future.
Your answer
Follow this Question
Related Questions
c# Getting Transforms from array made from FindGameObjectsWithTag 1 Answer
Check if 2 or more objects of same type is near object. 1 Answer
Is it possible to get a component from a parent of a found GameObject? 0 Answers
How would I access a property of another objects child component? 2 Answers
GameObject[] doesn't have a definition for transform/name/etc... 1 Answer