If I have one as an input on a function, and then break it:
the editor crashes when I attempt to compile the blueprint., and (crucially), the blueprint seems unrecoverable. Even if I delete the entire function, compiling will always crash now (don’t worry, I had the file versioned so I’m okay).
It doesn’t matter what’s being fed through in the struct - I can create a new input of that type and break it and it’ll still crash.
Also, it only happens if it’s an input on a function. I can break the struct anywhere else no problems.
Here’s the log:
‘ShipRoom_C_0’ is of class ‘ShipRoom_C’ however property ‘IntProperty_91’ belongs to class ‘TRASHCLASS_ShipRoom_79’
Address = 0xdf235216 (filename not found) [in F:\ue4\Unreal Engine\4.4\Engine\Binaries\Win64\UE4Editor-Core.dll]
Thing is, it doesn’t seem to matter if I never call the break, I still crash. Update though: I found out that the crash only happens if I have (or have had) an instance of this actor in the level when I compile. If I create a new empty level, I can compile the blueprint when I’m in there, and then going back to another level that has the blueprint already in it, everything works as it’s supposed to. But if I even add the blueprint to the empty level, delete it, and then compile, I crash.
I forgot to mention that this actor, ShipRoom, is being created as a child actor of another blueprint, Ship, originating with Ship’s constructionscript ([this is what I’m making]). The functionality all works fine once it’s compiled, it just won’t compile while the Ship actor is in the level (defeating the purpose of constructionscript, tbh).
The project’s really small, so it’s probably easiest if I just send you the files? I haven’t been able to repro this in a new project yet.
I was able to get the crash to reproduce. I have entered it as TTP# 346344 into our tracking software and attached your project. Our developers will be looking into the issue and we will post back here as soon as we have something.
I also noticed while testing your project that when the ‘Ship’ bp is compiled, the number of assets in the Scene Outliner will minus by a set amount each time, going into the negative. I’m not sure if this is related but I mentioned it in the TTP.
I just tested that asset count thing. The set amount that the number of actors in the Outliner subtracts per compile == the number of ShipRooms. Also, here there are 10 shiprooms, but one of them is numbered 19? Not sure if relevant.
I vined it, 'cause that’s how I document bugs.
I can’t be certain because I’m not sure of what the fix could be, but you should be able to keep working. If you work on something that doesn’t directly tie into the ‘ship’ and ‘shiproom’ blueprints would probably be best, but in the long run it may not matter.
Had a new crash problem that I feel like probably stems from the same underlying issues with custom structs so I’ll post it here: same project. On any class blueprint (even a completely empty one), make a new variable which is an array of Rooms. This works fine while you’re in the editor, whatever you might be doing with it, but if, by default, the array actually contains any Rooms, saving the blueprint will cause the editor to crash.
Leaving the array empty by default, but making it an editable var and adding to the array on an instance of your actor in the level will also cause a crash on save.
Basically, array of Rooms being nonzero = crash on save, but I don’t think there’s anything wrong with the struct itself.