diff --git a/FTSources/FTEditor/Sources/Postprocessors/SwfAssetPostprocessor.cs b/FTSources/FTEditor/Sources/Postprocessors/SwfAssetPostprocessor.cs index 1a86985..18520a4 100644 --- a/FTSources/FTEditor/Sources/Postprocessors/SwfAssetPostprocessor.cs +++ b/FTSources/FTEditor/Sources/Postprocessors/SwfAssetPostprocessor.cs @@ -273,6 +273,7 @@ namespace FTEditor.Postprocessors { SwfEditorUtils.LoadOrCreateAsset(clip_asset_path, (new_clip_asset, created) => { ConfigureClipAsset(new_clip_asset, asset, data, symbol); asset.Clips.Add(new_clip_asset); + return true; }); } } diff --git a/FTSources/FTEditor/Sources/Postprocessors/SwfPostprocessor.cs b/FTSources/FTEditor/Sources/Postprocessors/SwfPostprocessor.cs index dd992e0..67bf7c8 100644 --- a/FTSources/FTEditor/Sources/Postprocessors/SwfPostprocessor.cs +++ b/FTSources/FTEditor/Sources/Postprocessors/SwfPostprocessor.cs @@ -43,19 +43,21 @@ namespace FTEditor.Postprocessors { swf_asset.Settings = default_settings; swf_asset.Overridden = default_settings; } - SafeLoadSwfAsset(swf_path, swf_asset); + return SafeLoadSwfAsset(swf_path, swf_asset); }); } - static void SafeLoadSwfAsset(string swf_path, SwfAsset swf_asset) { + static bool SafeLoadSwfAsset(string swf_path, SwfAsset swf_asset) { try { var new_data = LoadSwfAssetData(swf_path); swf_asset.Data = SwfEditorUtils.CompressAsset(new_data); swf_asset.Converting = new SwfAsset.ConvertingState(); + return true; } catch ( Exception e ) { Debug.LogErrorFormat( "[FlashTools] Parsing swf error: {0}", e.Message); + return false; } } diff --git a/FTSources/FTEditor/Sources/SwfEditorUtils.cs b/FTSources/FTEditor/Sources/SwfEditorUtils.cs index e5f4e2f..93b43df 100644 --- a/FTSources/FTEditor/Sources/SwfEditorUtils.cs +++ b/FTSources/FTEditor/Sources/SwfEditorUtils.cs @@ -147,17 +147,22 @@ namespace FTEditor { return holder; } - public static T LoadOrCreateAsset(string asset_path, System.Action act) where T : ScriptableObject { + public static T LoadOrCreateAsset(string asset_path, System.Func act) where T : ScriptableObject { var asset = AssetDatabase.LoadAssetAtPath(asset_path); if ( asset ) { - act(asset, false); - EditorUtility.SetDirty(asset); + if ( act(asset, false) ) { + EditorUtility.SetDirty(asset); + AssetDatabase.ImportAsset(asset_path); + } } else { asset = ScriptableObject.CreateInstance(); - act(asset, true); - AssetDatabase.CreateAsset(asset, asset_path); + if ( act(asset, true) ) { + AssetDatabase.CreateAsset(asset, asset_path); + AssetDatabase.ImportAsset(asset_path); + } else { + ScriptableObject.DestroyImmediate(asset); + } } - AssetDatabase.ImportAsset(asset_path); return asset; }