うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】Assertion failed on expression: 'gForceReimports->empty()'

※Unity2019.4.6f1

private void OnValidate()
{
    var path = UnityEditor.AssetDatabase.GetAssetPath(asset);
    var importer = UnityEditor.AssetImporter.GetAtPath(path) as UnityEditor.TextureImporter;
    if (!importer.isReadable)
    {
        importer.isReadable = true;
        importer.SaveAndReimport();
    }
}

上記の処理で下記エラーが発生していました おそらく OnValidate で Reimport するのがよくない?

Assertion failed on expression: 'gForceReimports->empty()'
UnityEditor.AssetImporter:SaveAndReimport()
ImageHitAlpha:OnValidate()
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

SetDirty と SaveAssets を呼び出す方法に変えたところエラーは解決しました

private void OnValidate()
{
    var path = UnityEditor.AssetDatabase.GetAssetPath(asset);
    var importer = UnityEditor.AssetImporter.GetAtPath(path) as UnityEditor.TextureImporter;
    if (!importer.isReadable)
    {
        UnityEditor.EditorUtility.SetDirty(asset);
        UnityEditor.AssetDatabase.SaveAssets();
    }
}