O documento descreve como criar interfaces gráficas de usuário (GUI) em Unity 3D usando a classe GUI. A classe GUI fornece elementos como caixas, menus, rótulos, campos de texto e imagens que podem ser usados para criar interfaces de menu. A renderização GUI ocorre após a renderização do mundo 3D e permite personalizar o estilo dos elementos usando GUISkins.
1. Projeto de jogos RAD
Classe GUI: Menus e Interfaces
Augusto Bülow
2. Unity 3D
• Classe GUI todos recursos para interfaces de
tela (de forma facilitada):
• Box (caixas de menu)
• Menus (botões)
• Labels (textos simples)
• TextField (entrada de textos)
• DrawTexture (apresentação de imagens)
• ...
3. Unity 3D
• Renderização GUI – evento pos render do
mundo virtual 3D
• Elementos GUI colocados sobre (a frente) dos
elementos de jogo
• TODOS objetos podem referenciar a classe
GUI e compor / exibir elementos de tela
function OnGUI () {
....
}
4. Unity 3D
• BOX – Caixas de menus, caixas para
diálogos do jogo
• Parâmetros
• Posição e dimensão: Rect(x,y,sizex,sizey)
• Texto, título da Box
function OnGUI () {
GUI.Box(Rect (0, 0,
400,200),“Título");
}
5. Unity 3D
• LABEL – texto simples para exibição na tela
• Parâmetros
• Posição e dimensão: Rect(x,y,sizex,sizey)
• Tamanho é respeitado pelo texto, sendo quebrado
(automaticamente) dentro da área
• Texto
var numero = 1.3;
var texto1 = “Variável String”
function OnGUI () {
GUI.Label(Rect (0, 0, 400,200),“Qualquer
texto");
//permite uso de variáveis string + numéricas
GUI.Label(Rect (0, 20, 400,200), texto1 +
numero);
}
6. Unity 3D
• BUTTON – Botões
• Parâmetros
• Posição e dimensão: Rect(x,y,sizex,sizey)
• Texto
• Código botão usado para exibição e avaliação do
click / uso ao mesmo tempo
function OnGUI () {
if (GUI.Button( Rect(10, 10, 100,20),“Texto Botão“)) {
....
// se botão pressionado = código
}
}
7. Unity 3D
– TEXTFIELD : caixa para entrada de textos
– Parâmetros
– Posição e dimensão: Rect(x,y,sizex,sizey)
– String (variável) para entrada / input
– Número máximo de caracteres
var nome = “”;
function OnGUI () {
GUI.Label(Rect (0, 0, 400,200),“Digite seu nome:");
nome = GUI.TextField (Rect (0, 20, 100, 30), nome, 25);
// TextField – retorna valor para variável String
}
8. Unity 3D
– DRAWTEXTURE: exibir imagens (BMPs) na tela
– Parâmetros
– Posição e dimensão: Rect(x,y,sizex,sizey)
– Imagem (Texture2D) para exibição
var imagem_menu : Texture2D; //declara BMP – seta via Inspector
function OnGUI () {
sizex = imagem_menu.width; //possível pegar dimensões da imagem
sizey = imagem_menu.height;
GUI.DrawTexture(Rect(posx,posy,sizex,sizey), imagem_menu);
}
9. Unity 3D
– Elementos apresentados permitem construção dos
menus que precisamos
– Classe GUI mais completa, checar documentação
(manual) para controles extras:
– Toggle, TextArea, VerticalSlider ...
– GUI permite customização por meio de GUISkins
– GUISkin: definição geral de estilo do menu, incluindo
fontes, imagens, cores, etc, definíveis por elemento.
10. Unity 3D
– Criamos uma nova GUISkin
para criarmos nosso
“design” de menus
– Assets -> Create -> GUISkin
11. Unity 3D
– Por código, declaramos as GUISkins e determinamos
qual Skin deve ser usada antes de criar os elementos
GUI
var Skin1 : GUISkin;
var Skin2 : GUISkin; //defino via Inspector as Skins
function OnGUI () {
GUI.skin = Skin1;
GUI.Label(Rect (0, 0, 400,200),“Texto com Skin1");
GUI.skin = Skin2;
GUI.Label(Rect (0, 20, 400,200),“Texto com Skin2");
}