Projeto de jogos RAD 
Classe GUI: Menus e Interfaces 
Augusto Bülow
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) 
• ...
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 () { 
.... 
}
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"); 
}
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); 
}
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 
} 
}
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 
}
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); 
}
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.
Unity 3D 
– Criamos uma nova GUISkin 
para criarmos nosso 
“design” de menus 
– Assets -> Create -> GUISkin
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"); 
}

Aula gui

  • 1.
    Projeto de jogosRAD 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"); }