I have no idea why setting a property on the main character breaks everything. I tried setting it on a variable on another actor’s blueprint and it seemed fine. So I created a new C++ class and moved all my global game related properties to that class. I blueprinted it and plopped it in the level. I then just grab that actor once and cache it on any actor that needs it.
And so far, everything works.
I now have to go back and see what project I want to refactor and use. I’ve got like 5 of them now.
If there is a UE developer looking at this, here are the steps to reproduce:
- Create a new top down C++ project.
- Create a new material that uses the Length node. Try and make a circle. Make the material translucent. Not sure if that last part is necessary, but that’s what I have.
- Create a new Actor BP and add a plane. Make the plane the root component.
- Set the material you just made on the plane.
- Drop an instance of the BP into the level so you can see when it breaks.
- In the Top down character’s header file, add a property like so:
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = Selection)
TSubclassOf< AActor > RangeClass;
You can name it whatever you want.
- Compile the project.
- Set the RangeClass to the BP you made above.
- Save and exit editor.
- Reload the editor.
See the blueprint actor’s material is now broken. Open the material and the Length node is gone. Output Log will also show errors about Interchange.
Anyhow, there is a serious bug in 5.1 and 5.2. I hope someone notices soon because I have no clue why a property would do this.