Figma2UMG

Summary

Figma2UMG is a powerful plugin designed to seamlessly integrate Figma designs into Unreal Engine projects by generating Unreal Motion Graphics UI Designer (UMG) files. With Figma2UMG, developers and designers can easily import Figma assets, including UI designs, icons, and graphics, directly into their Unreal Engine environment. The plugin simplifies the workflow between design and development teams, allowing for efficient collaboration and rapid prototyping. Figma2UMG supports the import of Figma files while preserving frames, components, groups, and other design elements, ensuring fidelity and accuracy during the transition from design to implementation. Whether creating immersive experiences or interactive applications, Figma2UMG empowers developers to bring their Figma designs to life within Unreal Engine with ease. This plugin utilizes the Figma REST API and requires an access token for authentication. 

Key Features

Compatibility

Get Started

We are thrilled to announce that Figma2UMG is now available for sale on the Unreal Marketplace!


MarkedplaceURL: https://www.unrealengine.com/marketplace/en-US/product/figma2umg

Support: figma2umg@buvi.games

Bug report: Please share a figma file for testing when reporting bugs. If the issue in on the layout, please share also an UMG with the expected result.

Join the Discord channel for more information.

Usage

Documentation

Before importing your own Figma file, take the time visit the https://www.figma.com/community/plugin/1368487806996965174/figma2umg and open the plugin to see how to setup components, instances and flow.


Components

A figma Component will generate a UWidgetBlueprint. 

Each property on your Component will be a member variable of the UWidgetBlueprint.



Instances

A figma Instance will generate a UUserWidget from the UWidgetBlueprint of it's component.

Each member variable from the component's properties will be set here. This is how you control the values of your instance, not by changing the value directly on the instance. This will not work as no member variable was created when the UWidgetBlueprint, therefore, they are not accessed.

Some Properties are more comples, like InstanceSwap and Variant. They will generate functions on the UWidgetBlueprint and those will be called from the PreConstruct of the Blueprint owning the UUserWidget.


Buttons

A button is created either by forcing an frame to be a button or by creating a component set.


ComponentSet button

By creating a component with variants and naming the variants Default, Hovered, Pressed and Disable, the importer will create a UButton and each of the variation will be used to setup the FSlateBrush. Not that only the FSlateBrush can change between the button states, so, the base layout of the Default is used while the color


Frame to Button

The importer has the option to make a UButton out of a Figma Frame based on name comparison. This will generate an UButon where all the states (Normal, Hovered, Pressed and Disable) are going to be the same.

Non-Button Variants

Variants where the name do not match the button ones will create a UWidgetSwitcher with all the instances as children Widgets.


Fill and Stroke

Anything that is not a solid color will create an UTexture2DBuilder or UMaterial.

Gradient Fills

Any gradient will require a UMaterial to be create. The UMaterial will contain a shader with the value from Figma. All types of Gradient are supported. But keep in mind that as Thick Borders are also requitring a custom UMaterial, both are not supported currently together. Gradient fills only supports borders with 1 px currently.

Thick Border - UPDATE: Rounded box supports thicker borders. The plugin will be updated with this feature soon.

UBorder and UImage only support  borders with 1pixel. To get thicker borders the plugin creates an UMaterial for that.

Shapes and Images

Only Rectangles and Circles are supported to have Image in the brushes. For other shapes Figma2UMG request Figma to render the node as an image and the whole Figma's node will become an image.


Buvi

Kävlingevägen 104, 226 50

Lund, Sweden

(+46) 703 89 81 81

beto@buvi.games