internal static void UpdateTextureReferences(MerinoEditorResources instance) { // Iterate through all fields in instance and set texture references var serializedObject = new SerializedObject(instance); var prop = serializedObject.GetIterator(); var rootFolder = new [] { GetRootFolder() }; prop.NextVisible(true); while (prop.NextVisible(false)) { if (prop.propertyType == SerializedPropertyType.Generic) { var guids = AssetDatabase.FindAssets(prop.name + " t:Texture2D", rootFolder); var paths = guids.Select(guid => AssetDatabase.GUIDToAssetPath(guid)).Where( path => path.Contains(prop.name + ".") ); foreach (var path in paths) { var texture = AssetDatabase.LoadAssetAtPath(path, typeof(Texture2D)) as Texture2D; if (path.ToLower().Contains("/pro/")) { prop.FindPropertyRelative("pro").objectReferenceValue = texture; } else { prop.FindPropertyRelative("free").objectReferenceValue = texture; } } } } serializedObject.FindProperty("updateOnReloadScripts").boolValue = false; serializedObject.ApplyModifiedPropertiesWithoutUndo(); }
private static void OnPostprocessAllAssets(string[] importedAssets, string[] _, string[] __, string[] ___) { foreach (var path in importedAssets) { if (path.EndsWith("MerinoEditorResources.asset")) { var asset = AssetDatabase.LoadAssetAtPath(path, typeof(MerinoEditorResources)) as MerinoEditorResources; if (asset != null) { MerinoEditorResources.UpdateTextureReferences(asset); AssetDatabase.SaveAssets(); return; } } } }
public override void OnInspectorGUI() { if (serializedObject.FindProperty("updateOnReloadScripts").boolValue) { GUILayout.Label("Updating..."); } else { if (GUILayout.Button("Sync with EditorResources folder")) { MerinoEditorResources.GenerateResourcesScript(); } DrawDefaultInspector(); } }