TL;DR Adding elements to an array within a struct within a struct corrupts the outer most struct and every blueprint that had used it.
When the struct is corrupted, this message is given:
Effect:
So you go and delete all references to these variables in your blueprint. All calls, all functions with output/inputs, all “make structs,” etc., and even deleting all variables and local variables.
After all that, it still tells you there are variables with invalid types, even though none are showing up in your variables section under “My Blueprint” because you have already deleted them.
For some reason, not even “Remove unused variables” works, saying there are no variables to search for.
The only way around this is to either recreating all the corrupt blueprints (copying and pasting doesn’t work, as it is a reference error to the struct) or importing everything to a new project.
Steps to Reproduce:
I have reproduced this problem in a clean project, and the steps are as follows:
- Create a struct with an array in it. We’ll call this
Struct1
. - Create a struct that has a
Struct1
inside it. We’ll call thisStruct2
. - Use
Struct2
in any context. Parameters, variables, make nodes, etc. - Go back to
Struct1
, expand the array, and add in more elements.
After doing all of the above, all references to Struct2
have corrupted.
EDIT: Also, God forbid you referenced these variables in your level blueprint, as now your whole level is corrupt.