Pular para o conteúdo principal

GUI

Nesse artigo será abordado como trabalhar com alguns elementos da GUI. Os elementos abordados serão, TextField, Button, Slider e Box.

Quando for trabalhar com elementos da UI (User Interface) deve-se primeiro fazer o import necessário no início do arquivo de script

 import UnityEngine.UI; 

A função OnGUI da própria Unity é a responsável por exibir e interagir com os elementos criados via código.

 function OnGUI(){
 }

Botão

Para criar botões, o código será o seguinte

if ( GUI.Button( Rect( 10, 70, 100, 30 ), "Input"  ) ){

        Debug.Log(stringToEdit);

    }

Essa é uma das maneiras de criar um botão, pois o método GUI.Button tem várias assinaturas. Da maneira utilizada o primeiro parâmetro está relacionado à posição do botão na interface, que são respectivamente posição X, posição Y, largura e altura do botão. Já o segundo parâmetro é o texto que será exibido no botão.

A criação do botão está dentro de um if pois dessa forma é possível programar dentro do corpo do if algo que seja executado quando o botão for clicado.

TextField

TextFiled são componentes da UI onde o usuário pode entrar(digitar) com texto, para seu uso deve-se criar uma variável que receberá o retorno do texto inserido.


    

var stringToEdit : String = "Hello World";

Essa variável pode ser criada dentro da própria função OnGUI ou até mesmo no escopo global do script. Para inserir o campo de texto na UI o código abaixo deve ser utilizado.


    

stringToEdit = GUI.TextField (Rect (10, 150, 100, 30), stringToEdit, 25);

Muito parecido com o botão, o primeiro parâmetro o GUI.TextField é a posição e tamanho do campo de texto, o segundo parâmetro é o texto inicial que será exibido para o usuário, já o terceiro parâmetro indica a quantidade máxima de caracteres que aquele campo irá suportar. Esse método retorna o texto escrito no campo, por isso a stringToEdit está recebendo seu retorno.

Box

Box é um elemento usado para organizar a interface, ela cria um retângulo na sua interface com um título de sua escolha, dessa maneira você pode agrupar elementos. Para utilizar o código será o seguinte.


    

GUI.Box( Rect( 0, 0, 100, 200 ), "Level Select" );

Segue a mesma ordem do botão e textField, o primeiro parâmetro é a posição na tela e o segundo é o texto título do box.

Group

Group é mais uma forma de organizar os elementos na sua interface, esse componente não í visível, apenas é uma forma de organizar, como pode ser visto no código abaixo


    

GUI.BeginGroup( Rect( 10, 10, 120, 240) );

Nesse código você determina um novo começo e limite para sua interface, ou seja a partir dessa linha, qualquer referência à posição que um elemento venha a ter, estará relacionada a posição determinada no Group. Para finalizar o grupo e voltar a usar as coordenadas padrão da tela ou iniciar um novo grupo, você deve utilizar a linha seguinte.


    

GUI.EndGroup();

Horizontal Slider

Horizontal Slider é um elemento que possibilita a escolha do usuário entre em um intervalo  de dois valores, um mínimo e um máximo. Deve ser usado da mesma forma que o TextInput, com uma variável de controle. Veja o exemplo abaixo.

private var masterVolume : float = 1.0;

function OnGUI{
masterVolume = GUI.HorizontalSlider( Rect( 120, 35, 200, 30 ), masterVolume, 0.0, 2.0 );
}

Nesse código foi criado a variável de controle como dito acima, e dentro da função OnGUI, o método HorizontalSlider foi usado, e seu retorno aplicado à variável de retorno, o método HorizontalSlider precisa do primeiro parâmentro sendo uma posição e tamanho, o segundo parâmetro é o valor inicial do slider, já o terceiro e quarto parâmetro são respectivamente o valor mínimo e máximo que o Slider irá ter.

Pronto!

Dessa forma você já consegue trabalhar com alguns elementos básicos para criar sua interface com o usuário, em um próximo artigo será explicado sobre Labels e Imagens.

Comentários

Postagens mais visitadas deste blog

Comera Follow com Rotate

Ainda pensando no movimento da câmera, outro recurso muito utilizado é a rotação dela em torno do player. Observe o código a seguir. var player:Transform; var turnSpeed:float = 4.0f; var smooth:boolean = false; private var offset:Vector3; private var velocidade:Vector3; function Start () { offset = transform.position - player.position; Cursor.lockState = CursorLockMode.Locked; } function LateUpdate(){ offset = Quaternion.AngleAxis (Input.GetAxis("Mouse X") * turnSpeed, Vector3.up) * offset; if(smooth){ var targetPosition : Vector3 = player.position + offset; transform.position = Vector3.SmoothDamp(transform.position, targetPosition, velocidade, 0.3f); }else{ transform.position = player.position + offset; } transform.LookAt(player.position); } Nesse código tem-se agora, o player ou target do tipo Transform, atente-se a isso, dessa forma temos acesso apenas à propriedade Transform do player, existe também a variável turnSpeed que será a velocidade de rotaçã...

Input GetKey

Quando se trata de entrada do usuário, na unity temos vários métodos que permitem isso, nesse post será explicado sobre as teclas. Quando se quer saber se alguma tecla foi apertada, pode-se usar Input.GetKey, Input.GetKeyDown e Input.GetKeyUp. Esse três métodos retornam valores booleanos (true ou false), caso a tecla passada como parâmetro atenda a condição de cada método, por exemplo Input.GetKey(tecla) : retorna true se a tecla estiver pressionada. Input.GetKeyDown(tecla) : retorna true se a tecla foi pressionada e já altera seu valor, enquanto a tecla nao for solta e pressionada novamente, não volta a ser true. Input.GetKeyUp(tecla) : retorna true quando a tecla é solta, o oposto do Input.GetKeyDown. O exemplo abaixo vai mudar a cor do nosso gameObject dependendo do estado da tecla. private var cor:Material; function Start () { cor = GetComponent. ().material; } function Update () {...