public override void OnInspectorGUI() { MonoImporter target = this.target as MonoImporter; MonoScript script = target.GetScript(); if (!(bool)((UnityEngine.Object)script)) { return; } System.Type type = script.GetClass(); if (!MonoScriptImporterInspector.IsTypeCompatible(type)) { EditorGUILayout.HelpBox("No MonoBehaviour scripts in the file, or their names do not match the file name.", MessageType.Info); } XMonoBehaviourEditor.ShowXAttributeType(type); Vector2 iconSize = EditorGUIUtility.GetIconSize(); EditorGUIUtility.SetIconSize(new Vector2(16f, 16f)); List <string> names = new List <string>(); List <UnityEngine.Object> objects = new List <UnityEngine.Object>(); bool didModify = false; this.ShowFieldInfo(type, target, names, objects, ref didModify); EditorGUIUtility.SetIconSize(iconSize); if (!didModify) { return; } target.SetDefaultReferences(names.ToArray(), objects.ToArray()); AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath((UnityEngine.Object)target)); }
private void ShowFieldInfo(System.Type type, MonoImporter importer, List <string> names, List <UnityEngine.Object> objects, ref bool didModify) { if (!MonoScriptImporterInspector.IsTypeCompatible(type)) { return; } this.ShowFieldInfo(type.BaseType, importer, names, objects, ref didModify); foreach (System.Reflection.FieldInfo field in type.GetFields(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public)) { if (!field.IsPublic) { object[] customAttributes = field.GetCustomAttributes(typeof(SerializeField), true); if (customAttributes == null || customAttributes.Length == 0) { continue; } } if (field.FieldType.IsSubclassOf(typeof(UnityEngine.Object)) || field.FieldType == typeof(UnityEngine.Object)) { UnityEngine.Object defaultReference = importer.GetDefaultReference(field.Name); UnityEngine.Object @object = EditorGUILayout.ObjectField(ObjectNames.NicifyVariableName(field.Name), defaultReference, field.FieldType, false, new GUILayoutOption[0]); names.Add(field.Name); objects.Add(@object); if (defaultReference != @object) { didModify = true; } } } }