コード例 #1
0
        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));
        }
コード例 #2
0
 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;
             }
         }
     }
 }