コード例 #1
0
 public static EditorSerializedField GetEditorField(string fileName)
 {
     if (!EditorFieldsByFileName.ContainsKey(fileName))
     {
         EditorFieldsByFileName[fileName] = new EditorSerializedField(fileName);
     }
     return(EditorFieldsByFileName[fileName]);
 }
コード例 #2
0
        static EditorFieldsDatabase()
        {
            var mainAssembly = TypeUtility.GetMainAssembly();

            if (mainAssembly == null)
            {
                return;
            }

            var names = new List <string>();

            foreach (var type in mainAssembly.GetTypes())
            {
                PopulateFieldNames(type, names,
                                   ReflectionUtility.GetAllFields(type, f => f.GetCustomAttribute(typeof(EditorSerializeAttribute)) != null));
            }

            if (names.Count == 0)
            {
                return;
            }

            EditorFieldsByFileName = new Dictionary <string, EditorSerializedField>();

            if (!Directory.Exists(EditorSerializedFieldUtility.DirectoryPath))
            {
                Directory.CreateDirectory(EditorSerializedFieldUtility.DirectoryPath);
            }

            foreach (var filePath in Directory.GetFiles(EditorSerializedFieldUtility.DirectoryPath))
            {
                if (Path.GetExtension(filePath) == ".meta")
                {
                    continue;
                }
                var fileName = Path.GetFileNameWithoutExtension(filePath);
                if (!Regex.IsMatch(fileName, EditorSerializedFieldUtility.FILE_NAME_REGEX) ||
                    EditorFieldsByFileName.ContainsKey(fileName))
                {
                    continue;
                }

                EditorFieldsByFileName[fileName] = new EditorSerializedField(fileName);
            }

            foreach (var key in EditorFieldsByFileName.Keys
                     .Where(k => !names.Contains(EditorSerializedFieldUtility.GetTypeAndFieldNameFromFileName(k))).ToArray())
            {
                EditorFieldsByFileName[key].Delete();
                EditorFieldsByFileName.Remove(key);
            }
        }