Skip to content
Anastasia Laczko edited this page Apr 23, 2021 · 6 revisions

Introduction

There are expected to be several UI displays in the game, e.g. main menu, player stats, level text, pop-up menus, etc. The game engine makes use of libgdx's Scene2D class to render UI elements such as images and text to the screen.

Key Components

  • Renderer - Creates the stage, a canvas for UI elements (actors): Renderer.
  • Render Service - Provides global access to the stage: RenderService.
  • UI Components - Components containing actors to render onto the stage: extend UIComponent.

Usage

Create a UI entity and add UI Components to it.

Entity UI = new Entity();
UI.addComponent(new GameAreaDisplay("Box Forest"));

The UI component should extend UIComponent:

public class GameAreaDisplay extends UIComponent {
  private Label title;

Create actors and add them to the stage in create():

  @Override
  public void create() {
    super.create();
    addActors();
  }

  private void addActors() {
    title = new Label("Forest Area", skin);
    title.setFontScale(2f);
    stage.addActor(title);
  }

Any dynamic properties such as an actor's position should be set in draw():

  @Override
  public void draw(SpriteBatch batch)  {
    int screenHeight = Gdx.graphics.getHeight();
    float offsetX = 10f;
    float offsetY = 30f;
    title.setPosition(offsetX, screenHeight - offsetY);
  }

Remove actors from the stage in dispose():

  @Override
  public void dispose() {
    super.dispose();
    title.remove();
  }
}
Clone this wiki locally