public static EditorSerializedField GetEditorField(string fileName) { if (!EditorFieldsByFileName.ContainsKey(fileName)) { EditorFieldsByFileName[fileName] = new EditorSerializedField(fileName); } return(EditorFieldsByFileName[fileName]); }
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); } }