- Home /
Metadata not being saved on custom file types
I have a custom inspector made for a filetype not natively supported by unity. The code I used with an explanation is in the answer I gave to this question: http://answers.unity3d.com/answers/1361710/view.html
The problem I'm having is also explained there, I can't force-save to disk the metadata, I'm using AssetImporter.userData to save all data in JSON format but the data won't be saved until Unity does it on its own and if I close Unity before that, the data is lost.
I know AssetImporter.SaveAndReimport() works perfectly but I can't use that because I'm using an AssetPostProcessor and it gets called and I also need to change data there, so I would get stuck in a loop.
The option I have used on ScriptableObject-type assets is
EditorUtility.SetDirty(target);
AssetDatabase.SaveAssets();
But it doesn't seem to work in this case, I make sure that code runs, then check the .meta file and no changes were made.
I suppose there must be some difference with other asset types that makes this not work but I haven't found any alternative. There's one alternative I have thought of which would be to create a ScriptableObject that would work as a wrapper to these files but I would like to avoid having extra files, because I'm using this for an asset I'm putting on the asset store and It would be better to allow users to work directly on their files.
I found the answer, immediately after posting the question, here: https://forum.unity3d.com/threads/assetimporter-userdata-not-writing-to-the-meta-file-in-4-6.267493/ I used AssetDatabase.WriteImportSettingsIfDirty and it worked. I'll post it as an answer when it's available.