Hello, i’ve found 2 issues with 4.18 after migrating my game:
1- When i try to open a c++ file from the editor (for example if i click on the top right link that tells the parent class and if it’s c++) he opens a new instance of visual studion and tries to open the project again, but obviously i get some erros, because i already have the project open on the other visual studio instance. The Loading Visual Studio toast also doesn’t disappear.
2- When i change something in c++ class, all of the instances in the world of that type get their per-instance options rolled back to the defaults. This is a critical issue, because i’m losing all the per-instance values, so a lot of things stop working.
Thank you As i mentioned the second one is a lot more critical, so hopefully you’ll be able to replicate it, i think all i needed to do was add an uproperty or something like that and it defaulted the instance options.
I’ve reproduced the issue, but it’s not a 100% reproduction and I’ve noticed some odd behavior. Just to see if you get the same results I do, try this out: I created a new blank C++ project, added a new C++ class based off of Actor, and then added a variable with the following declaration:
After adding this, I compiled. Once the Hot Reload finished, I dragged an instance of the MyActor class into the level and edited the MyInt variable to give it a value.
At this point, if I do not save the map, when I add another variable and Hot Reload again, the value resets to 0. If I save the map however, the value does not reset after Hot Reloading. Do you see this same behavior?
In my case even if i save the level i always get my options defaulted.
Edit: Ok it’s even worse than i thought, it’s not just on instances, it’s also the blueprint, my Enemy_BP settings just got wiped to defaults. this completely nullifies Hot Reloading’s purpose, especially if we save after that, because we’ll be saving a wiped blueprint.
I created a new C++ blank project i added a new class with a new MyInt variable and i hot reloaded. Once that was done i dropped an instance and set the value of MyInt to 10. After that i create a new MyInt2 variable and hot reloaded and i did not lose the value of MyInt on the instance. I then created a blueprint that derives from the class and adding a third variable MyInt3 broke the instance once it hot reloaded. Whether i saved the bp or the map before did not change the outcome. So for the tests that i did, this issue appears to only happen on blueprints classes, and not with wih the c++ classes. When you hot reload he resets the blueprint default values to the c++ default values and with that all of the instances that derive from the blueprint also get their values reset.
Thank you for that information, xlar8or. I’ve reproduced what you’re experiencing and found out that another one of the members of my team was getting similar reports from another user and has entered a bug report. The bug is entered specifically for TSubclassOf pointer properties but I’ve left a comment on the report to let the devs know that this is also happening with other containers. You can find the report here: UE-51994.