I have just upgraded to UE 5.3, compiling it from the source, and getting BP errors in UMG widgets that use MVVM Viewmodels. The error happens in the generated “code” when assigning a view model manually.
Blueprint Runtime Error: "Accessed None trying to read property CallFunc_GetExtension_ReturnValue". Node: Set Ship Boost View Model Graph: SetShipBoostViewModel Function: Set Ship Boost View Model Blueprint: W_BoostDuration
I’ll probably have to debug it tomorrow, but I’m checking here in case anyone else is experiencing the problem or I am doing something wrong. Is it occurring for anyone else?
Edit: Additionally, having two fields of the same name bound to two different widgets does not work for the second widget… This would be the case if you have a composite view model that contains two different instances of another view model.
Figured it out! In short, at least one binding to FieldNotify must be present in a widget, otherwise UWidgetFieldNotificationExtension is not added.
Why did I have widgets without bindings? Because I incorrectly used view models in some widgets having manually created conversion functions that were bound using a legacy binding system. A more sensible approach now with 5.3 is to have an intermediate variable that is also a FieldNotify that triggers a conversion function that is bound via the view model.
Using the opportunity, I’d like to express how bad I find the names of automatically generated conversion functions and the fact that they are not removed when the binding is removed.