private List<GameObject> FindDoors(string[] parents)
{
GameObject[] doorsLeft = GameObject.FindGameObjectsWithTag(c_doorLeft);
GameObject[] doorsRight = GameObject.FindGameObjectsWithTag(c_doorRight);
List<GameObject> allDoors = doorsLeft.Union(doorsRight).ToList();
List<GameObject> toRemove = new List<GameObject>();
for (int i = 0; i < allDoors.Count; i++)
{
for (int x = 0; x < parents.Length; x++)
{
if (allDoors[i].transform.parent.name != parents[x])
{
toRemove.Add(allDoors[i]);
}
}
}
foreach (var it in toRemove)
{
allDoors.Remove(it);
}
foreach (GameObject door in allDoors)
{
Debug.Log("Door Parent : " + door.transform.parent);
}
return allDoors;
}
Использование:
var allDoors = FindDoors(new string[]{ "Wall_Door_Long_01", "Wall_Door_Long_02" });
Но в функции FindDoors возврат allDoors пуст. Я думаю, что проблема заключается в следующем:
if (allDoors[i].transform.parent.name != parents[x])
Когда это Wall_Door_Long_01, поэтому если это Wall_Door_Long_01, оно не удалит элемент, но затем это Wall_Door_Long_02, так что теперь оно истинно и удалит даже если имя родителя Wall_Door_Long_01 и то же самое, если это Wall_Door_Long_02
И затем в конце он удалит все элементы. Но я хочу, чтобы он удалил только двери, родители которых не Wall_Door_Long_01 и не Wall_Door_Long_02