Level Management Kit is a completely automatic level management system, tied into Unity's Addressables system (but easily swapped for something else). It's your simple go-to mobile game kit: a structured base for your game where all you need to do is add your gameplay.

Customise how many levels and sections your game has, and the UI is generated automatically to suit your input. From there you can load and play into any level, your stats are saved, and you continue onto the next level, automatically loading and saving as you go. Nothing is hidden inside DLLs, so everything can be edited to suit your game. Available now on the Unity Asset Store.

Features

  • Auto-generated level UI Set your number of sections and levels, and the selection UI is built to match.
  • Addressables-based loading Levels are instantiated, configured, used, and destroyed on demand. Swap the backend if you prefer.
  • Automatic save & continue Progress and stats are saved as you play, loading you back in where you left off.
  • Collectables built in Coins and gems that count themselves, with configurable sounds and scoring.
  • Stats & levelling system Tracks player statistics and an XP-based levelling curve you can tune.
  • Fully editable No hidden DLLs: every script is open and editable to fit your game.

How it works

You have one main gameplay scene (Scene_Gameplay) that holds all the systems you might need. When you want to load a level, it's instantiated in, configured, used, and then destroyed, ready for the next level. Here's how to swap the level template out for your own levels and gameplay.

Step 1: Configuring your levels

LevelObject.cs is a class attached to each level object that's spawned in. Add the component to the parent of the level, then configure the settings. There are slots for the level gem, the level coins (3 coins and 1 gem by default), and the end-game button. Add the Collectables.cs component to your collectables, configure each as a gem or a coin, and drag them into the gem and coin variables. The last variable, startTransform, is where the player starts the level. Create an empty game object in the level, position it, and assign it. Make sure the player object is in Scene_Gameplay and assigned in the GameManager. From there, collectables count themselves automatically.

Step 2: Configuring the game rules

If a level finishes when the player collides with an object (such as a finish line), attach FinishLevelObject.cs to your end goal. It calls GameManager.Instance.FinishLevel. Just make sure your player has the tag “Player” and a collider set to Is Trigger.

Step 3: Level data

If your levels aren't prefabs already, turn them into prefabs and put them in a folder. Then locate the LevelDataScriptableObject called LevelData in Assets/LevelManagement. Copy the sizes you set in the Level Selector (amount of sections and levels per section) and drag the game objects into LevelData. This is where the levels are loaded from.

Step 4: Extras

To change the UI, find the prefabs in Assets/LevelManagementKit/UI; most of the rest of the UI can be changed directly in the scene.

What's inside

Level System

The Level Selector is the main script for all level management. Here you customise how many sections there are and the section data.

  • Level Panels Parent: the parent transform where the panel is placed in the hierarchy.
  • Section Button Prefab: the section-select button prefab.
  • Level Button Prefab: the level-select button prefab.
  • Section Panel Prefab: the scrolling section prefab the buttons are instantiated into.

Sections

Sections (SectionData) hold the data for individual sections. Most of it is generated, but some can be assigned:

  • Size: how many sections your game has.
  • Section ID: the section name (shown in the UI).
  • Section Length: how many levels are in the section.

UI Manager & the UI system

The UI Manager has basic UI functionality in core methods called by other scripts (such as the Game Manager) during key moments, for example, showing the end screen when the game finishes. You can add animations here to make it flashier rather than simply toggling objects on and off.

UI Stat Shower

UIStatShower fetches a stat and shows it with its prefab (progress display or currency display). Pick the display from the dropdown and keep it updated along with the three bars at the top.

UI Coin & Gem Tab

The UICoinGemTab shows how many coins and gems the player has collected, used both at the end of a game and in the level-select UI. Drop the prefab where you need it and call SetUI(coins, gems) to update it.

Collectables

The Collectable Manager makes it easy to change how collectables sound and look: swap the CoinCollect and GemCollect sounds to change them. The Collectable script contains simple collect functionality that's easy to change or extend.

Game management & gameplay

The Game Manager is a singleton holding all gameplay functionality, from loading to starting and finishing a level. It also contains GameManagerHelper with constants you can tune:

  • Max Moves: moves before the player stops receiving a score bonus (optional).
  • Timer Points Max / Middle / Least / None: how long the player can take to receive each point boost tier.
  • Coin Score: default score for a coin.
  • Gem Score: default score for a gem.

Stats management

The Stat Manager holds all the player's basic statistics and the levelling system (LevelSystem). You can change how much XP is needed to rank up: by default 15 levels, incrementing the XP required (10 to 3000 XP), and 3000 XP per level after level 15.