I’m kind late to the party, but for those looking for an answer (c++), here it is.
First off delete your tick function as we won’t be needing that, my solution involves creating a custom tick.
Step 2. Have a ticker delegate handle in your widget’s class
FTSTicker::FDelegateHandle TickDelegateHandle;
Step 3. Make a custom tick function
.h :
bool CustomTick(float DeltaTime);
.cpp
bool UYourWidgetClass::CustomTick(float DeltaTime)
{
// Do whatever you gotta do here
return true;
}
Step 4. Bind you custom tick to the core ticker
NOTE : if you make CustomTick a UFUNCTION() and bind it using BindUObject, you’ll end up with the same problem you initially had, as the engine will realize the tick function you’re tryna bind is owned by a widget.
.cpp :
NOTE : For older versions of the engine (like 4.1 and before), you might have to use FTicker instead of FTSTicker, as FTSTicker is a thread-safe version they made later on. dw thought they’re used the exact same way.