Game Frameworks  
Lecture 07: 2D Game User Interfaces in Unity  
Edirlei Soares de Lima  
<edirlei.lima@universidadeeuropeia.pt>  
User Interfaces (UI)  
•
Unity provides three user interface toolkits:  
–
–
–
UI Toolkit: based on web technologies that support stylesheets,  
dynamic and contextual event handling, and data persistence.  
•
It’s still in development and is missing some features found in Unity UI and IMGUI.  
Unity UI: object-based system that uses components and objects to  
arrange, position, and style the user interface.  
•
Cannot be use for user interfaces within the Unity Editor.  
IMGUI: code-driven UI toolkit that is mainly intended as a tool for  
debugging.  
•
Not recommended for building the final user interface of a game or application.  
Unity UI – Canvas  
•
The Canvas is the area that all UI elements should be inside.  
–
Canvas is a Game Object with a Canvas component on it, and all UI  
elements must be children of a Canvas.  
–
Creating a new UI element, automatically creates a Canvas.  
Unity UI – Visual Components  
•
•
Text:  
–
The Text component has a text area for  
entering the text that will be displayed.  
–
It is possible to set the font, font style,  
font size, etc.  
Image:  
–
A sprite can be applied to the Image  
component under the Source Image  
property.  
Unity UI – Interaction Components  
•
Button:  
–
The Button control responds to a click  
from the user and is used to initiate or  
confirm an action.  
•
Toggle:  
–
The Toggle control is a checkbox that  
allows the user to switch an option on or  
off.  
Unity UI – Interaction Components  
•
Toggle Group:  
–
A Toggle Group is used to modify the  
behavior of a set of Toggles.  
–
Pressing a Toggle of a Group to switch it  
on automatically switches the others off.  
•
Slider:  
–
The Slider control allows the user to  
select a numeric value from a  
predetermined range by dragging the  
mouse.  
Unity UI – Interaction Components  
•
Scrollbar:  
–
A Scrollbar has a decimal number Value  
between 0 and 1.  
–
Scrollbars are often used together with a  
Scroll Rect and a Mask to create a scroll  
view.  
•
Dropdown:  
–
A Dropdown has a list of options to  
choose from.  
Unity UI – Interaction Components  
•
Input Field:  
–
Used to make the text of a Text Element  
editable by the user.  
•
Scroll Rect (Scroll View):  
–
Used when the content takes up a lot of  
space and needs to be displayed in a  
small area. The Scroll Rect allows users to  
scroll over the content.  
Unity UI – Events  
•
Unity includes an event system that communicates user  
interactions to visual elements.  
–
There are two ways to make a visual element react to an event:  
•
By implementing and registering a function through the inspector;  
•
By implementing and registering a function through code;  
–
Example 1: registering the function through the inspector  
•
UI:  
Unity UI – Events  
•
Example 1: registering the function through the inspector  
–
Event implementation:  
public class UIEvents : MonoBehaviour  
{
public Text playerNameText;  
public InputField playerNameInput;  
public void SetPlayerName()  
{
playerNameText.text = "Current Player: " + playerNameInput.text;  
}
}
–
Add the script to a GameObject (e.g. EventSystem) and set the properties:  
Unity UI – Events  
•
Example 1: registering the function through the inspector  
–
Select the object and the event function:  
Unity UI – Events  
•
Example 2: implementing and registering a function through code.  
public class UIEvents2 : MonoBehaviour  
{
public Text playerNameText;  
public InputField playerNameInput;  
void Start()  
{
Button button = GetComponent<Button>();  
button.onClick.AddListener(SetPlayerName);  
}
public void SetPlayerName()  
{
playerNameText.text = "Current Player: " + playerNameInput.text;  
}
}
Instantiate UI Components by Code  
•
All UI components can be instantiated by code.  
–
Example 1: Instantiate a text component  
public class InstantiateUI : MonoBehaviour  
{
public Canvas canvas;  
public Font font;  
void Start()  
{
GameObject textObj = new GameObject();  
textObj.name = "TestText";  
textObj.transform.SetParent(canvas.transform);  
Text text = textObj.AddComponent<Text>();  
text.text = "My Text";  
text.font = font;  
text.fontStyle = FontStyle.Bold;  
text.rectTransform.anchoredPosition = new Vector3(0, 0);  
}
}
Instantiate UI Components by Code  
•
All UI components can be instantiated by code.  
–
Example 2: Instantiate a Prefab UI:  
public class InstantiateUI2 : MonoBehaviour  
{
public Canvas canvas;  
public Font font;  
public GameObject optionsUIPrefab;  
void Start()  
{
GameObject optionsUI = GameObject.Instantiate(optionsUIPrefab,  
canvas.transform, false);  
optionsUI.GetComponent<RectTransform>().anchoredPosition = new  
Vector3(0, 0, 0);  
}
}
Exercise 1  
1
) Create and implement the interaction for the following form:  
•
When the player press “OK”, all the  
selected options must be displayed  
in a debug message.  
•
Use the Debug.Log function  
•
•
Only one option can be selected  
for the game difficulty.  
•
Use a Toggle Group.  
When the player changes the  
Window Mode, the game must  
enter/exist the fullscreen mode.  
•
Use the Screen.fullScreen property.  
•
The form must disappear when the  
player press “OK” or “Cancel”.  
Further Reading  
•
Unity User Manual, Available at: https://docs.unity3d.com/2020.1/  
Documentation/Manual/  
–
User interfaces (UI)  
•
•
•
•
•
•
Unity UI  
Canvas  
Basic Layout  
Visual Components  
Interaction Components  
Designing UI for Multiple Resolutions  
•
Books  
–
Jeremy G. (2017). Introduction to Game Design, Prototyping, and  
Development: from the Concept to Playable Game - with Unity and C# (2nd  
ed.). Boston, MA: Addison-Wesley Professional. ISBN: 978-0134659862  
–
Hocking, J. (2018). Unity in Action: Multiplatform Game Development in C#  
(
2nd ed.). Shelter Island, NY: Manning Publications. ISBN: 978-1617294969