Screenshot of the pause menu within the Menu Template made by Tiger Collins

Default Pause menu for the Menu Template

Summary
Type: Tool
Completed: Usable / In development
Acquirable: GitHub
My Role: Independent
What is it?: A template to be used for game jams, prototypes or as a base to expand upon.
Template Purpose
The Menu Package is a template for menus in game jams, prototypes or the starting point for large projects using Unity. The mission statement for the Menu Package is "to use polished menus in all projects", and I'm happy to say that the mission statement is accurate in the final product.
There are two methods of implementation for pause menus that the Menu Template offers that developers can utilise for their project. The primary method being a script in the scene that adds a premade pause menu additively into the game scene that works right out of the box. Alternatively, developers can code their desired features based on the use case using the core of the Menu Template.
All scripts of the template have inline documentation so that anyone of various proficiency levels can look at the code and know what's happening to add their code to the template. As the Menu Template streamlines aspects of development for those who don't want to code anything, it has some tools within it - tweening, credits, options, control display and control over what submenu is displayed.
Project Highlights
The features I'm proud of during the development of the Menu Template is as follows;

- Credits: Developers can use the Unity inspector to fill out a list of two strings - a name and a development role. The credits functions utilise the Unity Awake function to instantiate the list into the UI, saving performance and time as developers don't need to spend time fiddling around with the UI system and anchoring.

Screenshot from with the Unity Inspector of credits that will be instantiated at runtime

Screenshot from within the Unity Inspector of credits that will be instantiated at runtime

- Control Scheme: Control or keyboard-only input can be irritating on unreliable, so I made my own interpretation of Unity's Button component that can identify the input device and platform and change the display of the UI element in terms of sprite, colour and sizing. This function could be used to display desired control icons on the screen or better display the selected UI Element.

- Tweening: My tween system using animation curves operating outside of the Update function and doesn't set the Unity canvas to dirty - where the UI updates every frame, causing overhead.

What I learned
The parts of the Menu Template that I'm proud of are aspects I didn't need to learn anything new to implement. However, that didn't mean this project didn't go without growth, as performance is the real focus of the Menu Template. Meaning that within reason, the template had to be as lightweight as possible, which I achieved through the following;

- TryGetComponent: Using the TryGetComponent function, I was able to save performance and assign a local variable at runtime which was more performant in all scenarios related to the Menu Template.

- (Un)dirty Canvas: When a canvas is dirty in Unity, which updates the canvas every frame, causing overhead which can be detrimental for low-end devices. It can be set dirty manually or from other components like the Unity Animator but changing the transform does not set it dirty.

My other projects!

Back to Top