So im trying to put all gameobjects in a List then trying to add a component to all the gameobjects Here the code
object[] allObjects = FindObjectsOfTypeAll(typeof(GameObject));
List<string> temp_list= new List<string>();
foreach (object thisObject in allObjects)
{
if (!temp_list.Contains(thisObject.ToString().Replace("(UnityEngine.GameObject)", null)))
{
temp_list.Add(thisObject.ToString().Replace("(UnityEngine.GameObject)", null));
foreach (string some in temp_list)
{
print (some);
if (GameObject.Find(some))
{
if(!GameObject.Find(some).GetComponent<SaveCom>())
{
GameObject.Find(some).AddComponent<SaveCom>();
}
}
}
}
}
FindObjectsOfTypeAll returns a reference to each GameObject in the scene, so you can skip the step where you copy the name of each GameObject into a list, and then use GameObject.Find again. FindObjectsOfTypeAll is like calling GameObject.Find many times for you, without requiring you to know the name of the objects you’re looking for.
Instead, just use the result from FindObjectsOfTypeAll, but cast the returned array of objects into GameObjects. After that, call GetComponent to see if they already have the component, and then use AddComponent if they don’t.
// find all gameobjects in the scene, using "as" to cast into a GameObject array.
foreach(GameObject go in Resources.FindObjectsOfTypeAll(typeof(GameObject)) as GameObject[])
{
// see if the component is already included
var component = go.GetComponent<SaveCom>();
// if not, add it
if (component == null)
component = go.AddComponent<SaveCom>();
}