UnityのEditor拡張時、ScriptableObjectを保存したい時に調べたメモになります。
SaveAssetIfDirty
SaveAssetIfDirtyUnityはアセットが変更された場合の保存時に利用をします。 指定されたアセットが変更されている場合にのみ、そのアセットを保存するので、パフォーマンスの向上に役立ちます。
public class HogeScript : Editor
{
private void Save()
{
// ScriptableObjectの変更を行う
// アセットが変更されていれば保存を実行
AssetDatabase.SaveAssetIfDirty(targetScriptableObject);
}
}
SaveAssets
同じようなメソッドでSaveAssetsがあります。 こちらは、変更があったアセットが何であるかに関係なく、すべての変更が保存されます。
public class CustomEditorScript : Editor
{
void SomeFunction()
{
// 何らかのアセットの変更を行う
// アセットが変更されていれば保存を実行
AssetDatabase.SaveAssets();
}
}
最後に
以前まではSaveAssetIfDirtyを知らなかったのですが、意図的に保存する処理を書く場合は大概SaveAssetIfDirtyを使えば大丈夫でそうです(パフォーマンスも良さそう。








