UTextRenderComponent vs UWidgetComponent vs UBillboardComponent

Hi, there!

I was thinking about some temporary actors to display Text Info like taken damage and so on. I also want them to always face camera and to be in World space (far actors have smaller size). I start to think what should I prefer - UTextRenderComponent or UWidgetComponent, or even UBillboardComponent and why. Maybe anybody can clarify some pros and cons for one and other? Or should I just for example inherit from UTextRenderComponent and override GetRenderMatrix() method?

Found out some basic facts:

  • UTextRenderComponent generate 3D Mesh from Font data, so for planar objects it is not optimal to use it.
  • UBillboardComponent is ideal for planar objects and it use Texture2D and simply draw it on viewport depending on distance with Primitive Drawing Interface (PDI). Here our opportunity - to generate Sprite dynamically from Text and apply it with UBillboardComponent
  • UWidgetComponent can bring more simplicity to text rendering because it uses font cache from Slate app and keep it as planar data. Here usage is just trivial