Please try this In 4.7.6
-Add an exposed/public float variable to a Character template BP, such as third person
-Every tick print the value of this float variable
-Go into Play In Viewport (PIE)
-Alt Tab so you can go to and edit the value (WHILE the game instance is still runing)
-Watch the printed value constantly change as you edit the value, DURING gametime / PIE / runtime!
#The Bug in 4.8
Try to do the same in 4.8, you can’t, because the blueprint defaults are now greyed out while the game instance is running
Is there a way to restore the 4.7 functionality of editing default values during runtime?
Editing defaults during a PIE instance made polishing a game EXTREMELY fast!
Thanks for the report, but I’m not able to reproduce this in 4.8.0. To test, I created a new Actor Blueprint with an editable float variable and dropped it in the level. During PIE, I selected the Actor in the World Outliner. In the Details panel, the variable appeared as expected, and I could set the value by typing or using the slider. Can you test this in a new project in the 4.8.0 binary for me and see if it happens there as well? Or am I missing a step somewhere? Thanks!
We haven’t heard back from you in a while on this. Are you still able to reproduce this issue? I’m going to resolve this for now, but if you still see this issue in 4.8.0 please feel free to respond with the information requested above and we’ll keep looking into it. Thanks!
Ah, I see where the confusion was. I’ve been using 4.8 for a while now, and I forgot that had changed. Thanks for the clarification!
#Thank You Ben!
Thank you for your answer Ben!
Prior to 4.8 I could edit the default settings of the Blueprint asset itself, your method describes and demonstrates that I can now only edit properties of instances of the blueprint
Again, Ben’s solution for anyone who is curious:
“. During PIE, I selected the Actor in the World Outliner. In the Details panel, the variable appeared as expected, and I could set the value by typing or using the slider”
I have noticed that when you change the value on the instanced variable, it doesn’t update the default value in the original blueprint when it is edited. Is there a way we can change this default value while the game is running in a PIE.
Edit: I noticed there is a way to Set instance to defaults, but this doesn’t help me as there are parts of the C++ code that change these default values which I don’t want to have changed at the start. I also get a crash when trying to set the default values to the new instanced ones as there are a few tick functions trying to access my HUD which doesn’t seem viable. I was hoping there was still and old way to edit these values.
Changing the value on an instanced blueprint’s variable only changes that instance’s value. This is true whether in PIE or simply in the editor. There isn’t a way to convert an instance’s values into the default blueprint’s values.
Please open a new post for the crash you’re getting so we can investigate that fully. Include as many details as you can, like reproduction steps and crash logs. Thanks!
What is the way to get the values I am changing to then be saved to then be kept for the default values of the blueprint (as it seemed to do when opening the blueprint and changing values pre-4.8).
For now, I am having to:
Open the instance of the blueprint.
Change the values while running a new editor window.
Take a mental note/save of the values.
Stop the game.
Open the actual blueprint and add the values into the default values.
This seems quite laborious and as Rama mentioned - “Editing defaults during a PIE instance made polishing a game EXTREMELY fast!”
I have managed to find a solution that may work for you, though I would highly recommend changing these variables outside of PIE to prevent potential errors from occurring. If you select an instance and make changes, then press the edit blueprint dropdown menu, there is an option to apply instance changes to Blueprint, which should override the variables within the blueprint, please try this and let me know if it is what you are looking for.
I have seen that option and it is basically what I’m looking for. However, due to my code also changing variables from the defaults in the blueprint, it means that all those changes will be applied to the defaults (which I don’t want to happen). I also get a crash when attempting this on my HUD blueprint, as my character class is ticking, it is trying to access the HUD class and I’m assuming something happens with that instance the character is using when I try to apply defaults which causes the HUD to become NULL.
Unfortunately this is the only option that we have available. In regards to the crash, please make a new post in the bug reports section so we can assist you specifically with this error. In the crash report, please include your callstack, crash logs, and what steps you are taking to reproduce this on your end. Additionally, if there is any information that you find may be helpful or pertinent, please include it in the new crash report.
Thanks for the help, I’ll gather some info on the crash, but like I said it doesn’t really matter as my defaults are changed while playing as well.
This option however used to be available until I upgraded to 4.8 as Rama mentioned in the OP. If you could give some direction to where it greys out the defaults while you PIE and I can attempt to disable it via the source code?
Most unfortunate. This bug is unnecessary, and very irritating. You CAN STILL EDIT DEFAULT VALUES by PASTING TEXT INTO THE PROPERTIES (in 4.8.1 at least). Let us edit them outright!!
The process for changing settings is now:
See how settings look.
Make changes to blueprint.
See how settings look… and waste A LOT of time because of this.
The tweaking of settings never really ends, you just run out of time.
I now have MUCH less time to polish every aspect of the game I work on.
Changing values in the Details panel of the instance is not possible if you use a ChildActorComponent to spawn the actor/blueprint you are trying to modify because… the editor won’t let you see it’s details. Using ChildActorComponents for multiple cameras is necessary because view targets are specified by Actor and not Component. If I make the camera a component of the actor and try to modify the FOV on the instance… the postprocess settings are still grayed-out.
Dune: if I find where we can disable the disabling of the UI in the editor code, I will post back.