Array[] of children of a child
Hello comm unity ))) I've got some problems with array. So I got the code: using UnityEngine; using UnityEngine.UI; using System.Collections;
public class SearchChildren : MonoBehaviour {
public Text[] countFinder;
public GameObject[] counter;
void Start ()
{
counter = new GameObject[transform.childCount];
for (int i = 0; i < transform.childCount; i++)
{
counter[i] = transform.GetChild(i).gameObject;
countFinder[i] = counter[i].transform.FindChild("Count").GetComponent<Text>();
Debug.Log(countFinder[i]);
}
}
}
So, countFinder[i] = counter[i].transform.FindChild("Count").GetComponent(); keep saying that Array index is out of range. What am I doing wrong?
first explain do you have many child's in this game object & each child have a text component
I've got children with different names, but all of them have same named child "Count" with text component. I want to make Array with all that "Count" children and sum them 2gether)
Answer by Losteone · May 04, 2016 at 11:54 AM
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Text.RegularExpressions;
using System.Collections.Generic;
public class SearchChildren : MonoBehaviour {
Text textFinder;
string countFinder;
string countTextFinder;
GameObject[] counter;
float sum;
float countFinderNumber;
List<string> textFinderArr = new List<string>();
public void CountResults()
{
sum = 0;
counter = new GameObject[transform.childCount];
for (int i = 0; i < transform.childCount; i++)
{
counter[i] = transform.GetChild(i).gameObject;
textFinderArr.Insert(i, counter[i].transform.FindChild("Result").GetComponent<Text>().text);
countFinder = Regex.Match(textFinderArr[i], @"\d+").Value;
countFinderNumber = float.Parse(countFinder);
sum += countFinderNumber;
}
Debug.Log(sum);
}
}
Answer by Ali-hatem · May 02, 2016 at 07:15 PM
ok i have made a simple way i have tagged the Count objets with the same tag & then :
float sum;
float convert0,convert1,convert2;
GameObject [] child;
List<Text> counttext = new List<Text>();
void Start(){
child = GameObject.FindGameObjectsWithTag ("CountTag");
for(int i =0; i<child.Length; i++){
counttext.Add (child [i].GetComponentInChildren<Text> ());
}
convert0 = float.Parse (counttext [0].text);
convert1 = float.Parse (counttext [1].text);
convert2 = float.Parse (counttext [2].text);
sum = convert0+convert1+convert2;
print (sum);
}
But I don't want to change text, I just get it, pares it to float and then need to sum it up.
you can do what ever you want all the texts in counttext List but i will edited for you
Answer by Losteone · May 03, 2016 at 02:12 PM
I almost done this, and I'm close)
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Text.RegularExpressions;
using System.Collections.Generic;
public class SearchChildren : MonoBehaviour {
Text textFinder;
string countFinder;
string countTextFinder;
GameObject[] counter;
float sum;
float countFinderNumber;
List<string> textFinderArr = new List<string>();
public void countResults ()
{
counter = new GameObject[transform.childCount];
for (int i = 0; i < transform.childCount; i++)
{
counter[i] = transform.GetChild(i).gameObject;
textFinderArr.Add(counter[i].transform.FindChild("Result").GetComponent<Text>().text);
countFinder = Regex.Match(textFinderArr[i], @"\d+").Value;
countFinderNumber = float.Parse(countFinder);
sum += countFinderNumber;
}
}
}
But now, textFinderArr gets only 1 object, WHY???