private static void ProcessManagerAttributes()
{
var types = new string[] { ".cs", ".js" };
var allScriptPaths = Directory.GetFiles("Assets", "*.*", SearchOption.AllDirectories)
.Where(s => types.Any(x => s.EndsWith(x, System.StringComparison.CurrentCultureIgnoreCase)))
.ToArray();
instance.m_attributes.Clear();
for (int i = 0; i < allScriptPaths.Length; ++i)
{
UnityEditor.MonoScript script = UnityEditor.AssetDatabase.LoadAssetAtPath(allScriptPaths[i], typeof(UnityEditor.MonoScript)) as UnityEditor.MonoScript;
if (!script || script.GetClass() == null)
{
continue;
}
if (!typeof(Manager).IsAssignableFrom(script.GetClass()))
{
continue;
}
var type = script.GetClass();
instance.m_attributes[type] = new ManagerAttributes(type);
}
instance.hideFlags = HideFlags.NotEditable;
UnityEditor.EditorUtility.SetDirty(instance);
var so = new UnityEditor.SerializedObject(instance);
so.UpdateIfDirtyOrScript();
UnityEditor.AssetDatabase.SaveAssets();
}