Changing the default value of a struct that is included as an array in another struct can prevent any Blueprints that use a DataTable made from the second struct from compiling. It appears to be a permanent issue that requires both involved structs, the DataTable, and the Blueprint to be deleted and re-created.

Steps to Reproduce
  1. Create a new Blank Blueprint project.
  2. Create a two new Blueprint structs.
  3. In the first struct, add 2-3 variables of different types.
  4. In the second struct, add 1-2 variables and make sure one of the variables is an array of the first struct.
  5. Create a new DataTable that uses the second struct.
  6. Add 2-3 rows to the new DataTable and edit/set default values for them.
  7. Create a new Actor Blueprint.
  8. In the Actor Blueprint, add a new Data Table Row variable and make it an array.
  9. In the Event Graph, create the graph shown in the attached StructLoops image (you will need to split a couple pins to create the setup).
  10. Compile the Blueprint.
  11. Open the first struct and change some of the default values. Save the struct.
    • This marks the other struct, the DataTable, and the Blueprint as dirty.
  12. Save everything.
  13. Compile the Blueprint.

The compile fails with an error similar to "Error Invalid property 'CallFunc_GetDataTableRowFromName_OutRow' structure 'SecondStruct' error: Struct 'UserDefinedStruct /Game/SecondStruct.SecondStruct' Property 'TheStruct_6_94CBAF3C41107BBF392E338304F95177' Error ( Struct 'UserDefinedStruct /Engine/Transient.STRUCT_REINST_FirstStruct_3' is not compiled )". In addition, the variable names in the datatable have changed to now include apparent random hashes in the names.

The Blueprint compiles successfully.

Have Comments or More Details?

Head over to the existing Questions & Answers thread and let us know what's up.

Login to Vote

ComponentUE - Gameplay - Blueprint
Affects Versions4.
Target Fix4.19
Fix Commit3784604
Main Commit3804136
Release Commit3813083
CreatedDec 23, 2016
ResolvedDec 1, 2017
UpdatedJun 11, 2019