Tópicos Especiais em  
Engenharia de Software (Jogos II)  
Aula 07 – User Interface  
Edirlei Soares de Lima  
<edirlei@iprj.uerj.br>  
Unity 3D: User Interface  
•
O sistema de interface com usuários da Unity permite a  
criação de interfaces de maneira rápida e intuitiva.  
–
–
–
–
–
Canvas  
Layout  
Visual Components  
Interaction Components  
GUI Components por Script  
Canvas  
•
•
O Canvas é a área em que todos os elementos da interface do  
usuário devem ser posicionados.  
–
É um GameObject com um componente Canvas;  
–
Todos os elementos da interface do usuário devem ser filhos de um  
Canvas;  
Modos de Renderização:  
–
–
–
Screen Space – Overlay;  
Screen Space – Camera;  
World Space;  
Layout  
•
•
Rect Transform:  
–
Translate, Rotate, Scale  
Anchor presets:  
Componentes Visuais  
•
Text:  
Componentes Visuais  
•
Image:  
Componentes Visuais  
•
Acessando os componentes por script:  
using UnityEngine;  
using UnityEngine.UI;  
public class TesteText : MonoBehaviour {  
private Text meuTexto;  
void Start()  
{
meuTexto = GetComponent<Text>();  
}
void Update()  
{
meuTexto.text = "FPS: " + (1.0f / Time.smoothDeltaTime);  
}
}
Componentes de Interação  
•
Button:  
–
OnClick:  
public class TesteBotao : MonoBehaviour {  
private Text textoBotao;  
void Start(){  
textoBotao = GetComponentInChildren<Text>();  
}
void CliqueBotao(){  
textoBotao.text = "Clicado!";  
}
}
Componentes de Interação  
•
Toggle:  
public class TesteUI : MonoBehaviour {  
private Text textoBotao;  
public Toggle meuToggle;  
void Start(){  
textoBotao = GetComponentInChildren<Text>();  
}
void CliqueBotao(){  
if (meuToggle.isOn)  
textoBotao.text = "Clicado 1!";  
else  
textoBotao.text = "Clicado 2!";  
}
}
Componentes de Interação  
•
Slider:  
public class TesteUI : MonoBehaviour {  
private Slider meuSlider;  
public Text texto;  
void Start()  
{
meuSlider = GetComponent<Slider>();  
}
void SliderChange()  
{
texto.text = "Valor: " + meuSlider.value;  
}
}
Componentes de Interação  
•
Dropdown:  
public class TesteUI : MonoBehaviour {  
private Dropdown meuDropdown;  
public Text texto;  
void Start(){  
meuDropdown = GetComponent<Dropdown>();  
}
void DropDownChange(){  
texto.text = "Selecionado: " +  
meuDropdown.options[meuDropdown.value].text;  
}
}
Componentes de Interação  
•
Input Field:  
public class TesteUI : MonoBehaviour {  
public InputField input;  
public Text texto;  
void CliqueBotao()  
{
texto.text = "Nome: " + input.text;  
}
}
Componentes de Interface por Script  
•
Além de criar componentes visualmente, também é possível  
criar elementos de interface no evento OnGUI:  
void GUI.Label(Rect position, string text);  
bool GUI.Button(Rect position, string text);  
string GUI.TextField(Rect position, string text);  
string GUI.TextArea(Rect position, string text);  
Componentes de Interface por Script  
•
Label:  
using UnityEngine;  
using System.Collections;  
public class MeuScript : MonoBehaviour {  
private Rect helloPos;  
void Start()  
{
helloPos = new Rect((Screen.width/2)-50,(Screen.height/2)-50,100,30);  
}
void OnGUI()  
{
GUI.Label(helloPos, "Hello World!");  
}
}
Componentes de Interface por Script  
•
Button:  
public class TesteGUI : MonoBehaviour {  
public string textoBotao = "Clique";  
void OnGUI()  
{
if (GUI.Button(new Rect(10, 70, 50, 30), textoBotao))  
{
textoBotao = "Clicado!";  
}
}
}
Componentes de Interface por Script  
•
TextField:  
public class TesteGUI : MonoBehaviour {  
public string texto = "Hello World!";  
void OnGUI()  
{
texto = GUI.TextField(new Rect(10, 10, 200, 20), texto, 25);  
}
}
Outros Componentes: https://docs.unity3d.com/Manual/gui-Controls.html  
Customização (GUI Style): https://docs.unity3d.com/Manual/class-GUIStyle.html