Beispiel #1
0
        void AnalyzeGameObject()
        {
            _monoInfos.Clear();
            Component[] components = _gameObject.GetComponents <Component>();
            foreach (var component in components)
            {
                var componentType = component.GetType();

                _MonoInfo monoInfo = new _MonoInfo();
                _monoInfos.Add(monoInfo);

                monoInfo.name = componentType.Name;
                while (componentType != null && Array.IndexOf(_blacklistTypes, componentType) == -1)
                {
                    _ComponentInfo componentInfo = GetComponentInfo(componentType, component);
                    monoInfo.componentInfos.Add(componentInfo);
                    componentType = componentType.BaseType;
                }
            }
        }
Beispiel #2
0
        _ComponentInfo GetComponentInfo(Type type, object component)
        {
            _ComponentInfo componentInfo = new _ComponentInfo();

            componentInfo.name = type.Name;

            var fieldInfos = type.GetFields(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);

            foreach (var fieldInfo in fieldInfos)
            {
                try
                {
                    var        value = fieldInfo.GetValue(component);
                    _FieldInfo fi    = new _FieldInfo();
                    fi.name  = fieldInfo.Name;
                    fi.type  = fieldInfo.FieldType.Name;
                    fi.value = (value != null) ? value.ToString() : "null";
                    componentInfo.fieldInfos.Add(fi);
                }
                catch { }
            }

            var propertyInfos = type.GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);

            foreach (var property in propertyInfos)
            {
                // Query for deprecated value will yield exception
                try
                {
                    var        value = property.GetValue(component, null);
                    _FieldInfo fi    = new _FieldInfo();
                    fi.name  = property.Name;
                    fi.type  = property.PropertyType.Name;
                    fi.value = (value != null) ? value.ToString() : "null";
                    componentInfo.fieldInfos.Add(fi);
                }
                catch { }
            }

            return(componentInfo);
        }