Build: Binary, 4.5.1
If you create a custom blueprint structure, then add an array of those structures to another blueprint, it will ‘disappear’ the next time you load your project. In the blueprint housing the structure array, if you add a new variable the structure array will then re-appear. Attempting to edit any blueprints making reference to those structures before you’ve manually fixed it will cause compile errors.
- Create a new blank project, and within it create a blueprint structure. Add at least one property to it.
- Create a second blueprint derived from Actor, and within it create a new variable of the previous structure type. Set it as an array.
- Save the project, then close it.
- Re-open the project, and open the actor-derived blueprint. Note that the variable for the array of custom structures is missing, and the compile button is reporting an error.
- Press the ‘Add Variable’ button. Notice that the structure array re-appears along with the new variable.
- Delete the new variable and save/compile.
This happens every time you open the project, and is highly irritating, especially the first time you encounter it.
I followed your repro steps and did not get the same error. Are there any steps you might have missed in your description? When you say it disappears, is that from the My Blueprint panel or from the Event Graph? Does this happen in any new project you create?
Hmm, all the steps seem to be there - this happens in any project including new empty ones. I repro’d it a few times this way before filling out the bug report. It disappears from the ‘My Blueprint’ panel, and any other blueprints that reference that array also report it as missing after you open them.
I also get some warnings on all projects, including empty ones - like the 'LogUObjectGlobals:Warning: Failed to find object ‘Class None.’ warning I’ve seen others report here. Perhaps it’s a symptom to another problem - if you’re not able to reproduce it this way.
Actually I may not have been clear in step 1/2 - the structure array should be empty. Don’t add any default items to it - if you add default items it works as expected. In my case I’m dynamically filling them - so it’s an empty array in the actor blueprint.
I was able to reproduce this following your steps if I did not compile the blueprint with the UserDefinedStruct variable before closing the project. Upon reopening the project, that variable was indeed missing from the My Blueprints panel. It does not appear to matter if it is an array, but compiling the blueprint before closing the project the first time seems to solve the problem for me. Even if you didn’t, using the variable in the blueprint’s Event Graph seems to retain its information when reopening the project the next time. Hope that helps for now.
I have entered a bug report in our system for our developers to look at (UE-5559), and I will let you know when I see an update on it. Thanks for your report!
Thanks Ben! I can confirm I see the same behavior if saving and manually compiling before closing the project. It’s important to note that auto-compile when using Play-In-Editor does not appear to prevent this issue, you have to manually click the compile icon before using PIE or closing the editor.
I just got confirmation that this bug has been fixed and should work correctly in a future version of the engine, probably 4.7. Thanks again!