Categories

Levels

For each level in your game there is a lot to think about, not just the gameplay itself, but level selection, unlocking, data, scoring, win conditions and more. Game Framework provides the framework for managing all these details.

Level functionality is based upon GameItem and it’s related classes and so it inherits all features such as the ability to use in app purchase, unlocking, selection screens, saving of information and so forth. It is worth reviewing the Game Structure overview page first as this page will focus on additions and differences from those documented there.

Setup

You can setup levels automatically through GameManager or manually through scripting. When using GameManager, you specify the number of levels that you want and then the Levels will then be initialised based upon localisation strings and resource files as documented in the information about GameItems.

Level Setup Options

You can then access all levels through the GameItemManager available through GameManager.Instance.Levels.

LevelManager

The LevelManager component should be added to your game scene and holds information about run time state of the level including such things as whether is is started, running time and other options. From code you can access LevelManager through LevelManager.Instance.

LevelManager gives you a number of optional conditions for ending the level in either a win or lose state that you can enable and which are then automatically handled. You can also call the methods on LevelManager directly such as LevelManager.Instance.GameOver(bool isWon) to end the game based upon your own logic, or the LevelStarted() and LevelFinished() methods to set status.

Object Model

The Level class represents an instance of a level and inherits from GameItem exposing all of the same properties and methods. Level overrides IdentifierBase to ‘Level’ and IdentifierBasePrefs to ‘L’ to distinguish it from other GameItems. Level also contains a number of additional properties including:

Stars Won Support

StarTotalCount – A total count of stars that can be won

StarsWon – A bitmask of stars won (automatically saved across plays). Generates a message of type StarsWonMessage when changed

StarsWonCount – The total stars that have been won for this level

Star1Target – A value for holding a target for the first star

Star2Target – A value for holding a target for the first star

Star3Target – A value for holding a target for the first star

Star4Target – A value for holding a target for the first star

Progress – A field for recording the current progress

ProgressBest – The best progress (automatically saved across plays)

TimeTarget – A target time

TimeBest – A field for recording the best time (automatically saved across plays)

Level Selection

A Level Selection Screen

CreateLevelButtons and LevelButton behave in a similar to their base components for laying out the character selection display. LevelButton additionally handles display of Stars and listens for messages of type LevelPurchasedMessage to update the display automatically if they are purchased through in app purchasing. To display stars the button prefab should have a gameobject named ‘StarsWon’ that has child gameobjects ‘StarxWon’ and ‘StarxNotWon’ that represent the different won / not won display and where x is the star number e.g. ‘1’

The selected Level is always available through the GameManager.Instance.Levels.Selected property or through LevelManager is that is added to the scene.

Level Display

The selected Level is available through the GameManager.Instance.Level property and so through this you can access things such as the currently selected levels name, description, stars won, extension data etc.

The ShowLevelInfo component can be added to a gameobject with a UI Text component to automatically update the Text display with customisable information about the currently selected level.

Level Coins and Stars

Coins and Score

The ShowLevelCoins, ShowLevelScore and ShowLevelHighScore components provide ways of displaying the current levels coins, score and high score respectively. These components make use of the ShowValueAnimatedMessaging abstract component for automatically updating the display when updates occur. Updates can be aggregated in variety of different ways and any changes animated using a custom or predefined animation. (see the Animation\ValueChanges demo in the extras bundle)

Stars

The EnableBasedUponNumberOfStarsWon component allows you to shows one of two gameobjects based upon the stars the player has won and a property indicating which star the component represents. You could create multiple gameobjects for each star and use this to selectively enable child gameobjects representing whether the star has been won or not. It will also automatically react to changes. Instead of manually creating multiple such gameobjects for each life you could instead use the CreateStarIcons component to do this automatically based upon a prefab that represents what you want created for each available life and either the global or a specified life count.

Prefabs

Prefabs associated with Levels can be setup and retrieved as discussed in the description on GameItem.

Making Changes

You can modify these values directly through scripting. In addition there are various components that you can use for displaying and working with the different properties.

StarsWonhandlerCoins and StarsWonHandlerScore allow for automatically setting stars that have been won based upon the levels StarTarget values for either level coins or level score. You can also chose to explicitely specify values if you so wish.

In addition you can use the health collider for changing these values automatically based upon Physics collisions.

Unlocking

Like all GameItems you can have Levels in a locked status. Unlocking can be done through code, by collecting coins and adding a UI button with the UnlockLevelButton attached or through in app purchase.

Game Over

When a game is finished (either won or lost) using LevelManager then the standard GameOver dialog will be displayed. This can be configured to show different properties, settings and features. See the UI documentation for further details.

Game Over Dialog

Cheat Functions

Using the Cheat Functions window (Window Menu | Game Framework | Cheat Functions Window) you can manipulate the current level to aid with testing of your game.