Я думаю, я бы использовал словарь родителей для этого, вот пример кода, который я написал. Обратите внимание, что я на самом деле не пробовал код, поэтому может потребоваться некоторая настройка, например, добавление соответствующих объектов в список и тому подобное.
Вот как я заполнил бы словарь:
List<GameObject> GameObjectList = new List<GameObject>();
GameObjectDictionary ParentDictionary = new GameObjectDictionary();
public void GetChildren(){
foreach(GameObject parent in GameObjectList){
foreach(Transform child in parent.transform){
ParentDictionary.Add(parent, child.gameObject)
}
}
}
И GameObjectDictionary
должен выглядеть примерно так:
public class GameObjectDictionary
{
private Dictionary<GameObject, List<GameObject>> internalDictionary = new Dictionary<GameObject, List<GameObject>>();
public void Add(GameObject key, GameObject value)
{
if (this.internalDictionary.ContainsKey(key))
{
List<GameObject> list = this.internalDictionary[key];
list.Add(value);
}
else
{
List<GameObject> list = new List<GameObject>();
list.Add(value);
this.internalDictionary.Add(key, list);
}
}
GetValue(GameObject key){
return(internalDictionary[key]);
}
}
Обратите внимание, что здесь есть O(n'2) временная сложность.