public static Dictionary<System.Type,List<UFTObjectOnScene>> getObjectOnSceneByAtlas(UFTAtlasMetadata atlasMetadata, System.Type additionalType=null){ Dictionary<System.Type,List<UFTObjectOnScene>> result = new Dictionary<System.Type, List<UFTObjectOnScene>>(); HashSet<System.Type> unwantedTypes=new HashSet<System.Type>(); Object[] objects = GameObject.FindObjectsOfType( typeof( Component ) ); foreach( Component component in objects ) { if (unwantedTypes.Contains(component.GetType())) continue; UFTObjectOnScene objectOnScene=new UFTObjectOnScene(component); foreach (FieldInfo prop in component.GetType().GetFields(BindingFlags.Instance| BindingFlags.Public | BindingFlags.NonPublic)) { if (prop.FieldType == atlasMetadata.GetType() || prop.FieldType == additionalType ){ objectOnScene.addProperty(prop); } } if (objectOnScene.propertyList.Count == 0 ){ unwantedTypes.Add(component.GetType()); } else { List<UFTObjectOnScene> list; if ( !result.ContainsKey(component.GetType())){ list = new List<UFTObjectOnScene>(); result.Add(component.GetType(),list); } else { list = result[component.GetType()]; } list.Add(objectOnScene); } } return result; }
public static Dictionary <System.Type, List <UFTObjectOnScene> > getObjectOnSceneByAtlas(UFTAtlasMetadata atlasMetadata, System.Type additionalType = null) { Dictionary <System.Type, List <UFTObjectOnScene> > result = new Dictionary <System.Type, List <UFTObjectOnScene> >(); HashSet <System.Type> unwantedTypes = new HashSet <System.Type>(); Object[] objects = GameObject.FindObjectsOfType(typeof(Component)); foreach (Component component in objects) { if (unwantedTypes.Contains(component.GetType())) { continue; } UFTObjectOnScene objectOnScene = new UFTObjectOnScene(component); foreach (FieldInfo prop in component.GetType().GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)) { if (prop.FieldType == atlasMetadata.GetType() || prop.FieldType == additionalType) { objectOnScene.addProperty(prop); } } if (objectOnScene.propertyList.Count == 0) { unwantedTypes.Add(component.GetType()); } else { List <UFTObjectOnScene> list; if (!result.ContainsKey(component.GetType())) { list = new List <UFTObjectOnScene>(); result.Add(component.GetType(), list); } else { list = result[component.GetType()]; } list.Add(objectOnScene); } } return(result); }