Unity Scripting

Corpo Padrão de um Script C# Unity

Antes de começar a desenvolver um projeto com Unity, uma boa prática é estruturar os diretórios do projeto. Crie as seguintes pastas:

C:\Users\CamiloCG\AppData\Local\Microsoft\Windows\INetCache\Content.Word\Captura de tela 2016-05-11 19.16.45.png

Para criar um Script em C#:

  1. Na pasta Scripts clique com o botão direito, abrirá uma tela. Selecione Create> C# Script.
  2. Digite o nome do Script.

Corpo padrão de um Script C# (Nome: Movimento):

using UnityEngine;

using System.Collections;

public class Movimento : MonoBehaviour

{

    // Use this for initialization

    void Start()

    {

        //Dentro deste método seu código irá executar apenas uma vez

        //quando seu jogo começar a executar

    }

    // Update is called once per frame

    void Update()

    {

        //Dentro deste método, seu código irá atualizar a cada frame da tela

    }

}

Primeiro Hello World

using UnityEngine;

using System.Collections;

public class Movimento : MonoBehaviour

{

    // Use this for initialization

    void Start()

    {

        Debug.Log("Hello World!");

    }

    // Update is called once per frame

    void Update()

    {

    }

}

using UnityEngine;

using System.Collections;

public class Movimento : MonoBehaviour

{

    int i = 0;

    // Use this for initialization

    void Start()

    {

        Debug.Log("Hello World!");

    }

    // Update is called once per frame

    void Update()

    {

        Debug.Log(i++);

    }

}

Scripts do Projeto

Nossa aplicação terá praticamente 3 scripts básico:

  1. SolarSystem: responsável por realizar a rotação dos Planetas
  2. Planet: armazenamento das informações dos Planetas
  3. ShowInfos: exibir na tela as informações dos planetas

SolarSystem:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class SolarSystem : MonoBehaviour {

    public GameObject Sol;

    [Space(10)]

    public GameObject Mercurio_Main;

    public GameObject Mercurio;

    [Space(10)]

    public GameObject Venus_Main;

    public GameObject Venus;

    [Space(10)]

    public GameObject Terra_Main;

    public GameObject Terra;

    public GameObject Lua;

    [Space(10)]

    public GameObject Marte_Main;

    public GameObject Marte;

    [Space(10)]

    public GameObject Jupiter_Main;

    public GameObject Jupiter;

    [Space(10)]

    public GameObject Saturno_Main;

    public GameObject Saturno;

    [Space(10)]

    public GameObject Urano_Main;

    public GameObject Urano;

    [Space(10)]

    public GameObject Netuno_Main;

    public GameObject Netuno;

    [Range(0.3f, 20f)]

    public float Velocidade_Rotacao = 1f;

    private float vel;

        

        void Update () {

        vel = Velocidade_Rotacao;

        Sol.transform.Rotate(0, 0, 0.1f * vel);

        Mercurio_Main.transform.Rotate(0, 0, 0.7f * vel);

        Mercurio.transform.Rotate(0, 0, 0.7f * vel);

        Venus_Main.transform.Rotate(0, 0, 0.5f * vel);

        Venus.transform.Rotate(0, 0, 0.6f * vel);

        Terra_Main.transform.Rotate(0, 0, 0.4f * vel);

        Terra.transform.Rotate(0, 0, 2f * vel);

        Lua.transform.Rotate(0, 0, 0.5f * vel);

        Marte_Main.transform.Rotate(0, 0, 0.34f * vel);

        Marte.transform.Rotate(0, 0, 0.6f * vel);

        Jupiter_Main.transform.Rotate(0, 0, 0.2f * vel);

        Jupiter.transform.Rotate(0, 0, 0.5f * vel);

        Saturno_Main.transform.Rotate(0, 0, 0.1f * vel);

        Saturno.transform.Rotate(0, 0, 0.5f * vel);

        Urano_Main.transform.Rotate(0, 0, 0.05f * vel);

        Urano.transform.Rotate(0, 0, 0.05f * vel);

        Netuno_Main.transform.Rotate(0, 0, 0.02f * vel);

        Netuno.transform.Rotate(0, 0, 0.04f * vel);

    }

}

Parâmetros Utilizados:

Planeta

Rotação em Z

Sol

0.1f

Mercurio_Main

0.7f

Mercurio

0.7f

Venus_Main

0.5f

Venus

0.6f

Terra_Main

0.4f

Terra

0.2f

Lua

0.5f

Marte_Main

0.34f

Marte

0.6f

Jupiter_Main

0.2f

Jupiter

0.5f

Saturno_Main

0.1f

Saturno

0.5f

Urano_Main

0.05f

Urano

0.05f

Netuno_Main

0.02f

Netuno

0.04f

O script deve ser inserido no GameObjet Sistema Solar, e referenciar todos os Planetas nos campos:

Planet:

Script responsável por conter as informações dos Planetas:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class Planet : MonoBehaviour{

    public string Nome = string.Empty;

    public string Raio = string.Empty;

    public string DistanciaDoSol = string.Empty;

    public string Gravidade = string.Empty;

    public string Massa = string.Empty;

    public string DiasAno = string.Empty;

    public string MeioAmbiente = string.Empty;

}

ShowInfos:

Script responsável por mostrar todas as informações dos planetas:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.UI;

public class ShowInfos : MonoBehaviour {

    public GameObject Panel;

    public Text Nome;

    public Text Raio;

    public Text DistanciaDoSol;

    public Text Gravidade;

    public Text Massa;

    public Text DiasAno;

    public Text MeioAmbiente;

    [Space(10)]

    public Camera cameraMain;

    private RaycastHit Hit;

    private SolarSystem SS;

    private float velRotBuffer = 0;

    private void Start()

    {

        SS = FindObjectOfType<SolarSystem>();

        velRotBuffer = SS.Velocidade_Rotacao;

    }

    void Update()

    {

        Ray ray = cameraMain.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0f));

        if (Physics.Raycast(ray, out Hit, 10000))

        {

            if(Hit.transform.CompareTag("Planet"))

            {  

                SS.Velocidade_Rotacao = 0;

                Planet planeta = Hit.transform.GetComponent<Planet>();

                Nome.text = planeta.Nome;

                Raio.text = planeta.Raio;

                DistanciaDoSol.text = planeta.DistanciaDoSol;

                Gravidade.text = planeta.Gravidade;

                Massa.text = planeta.Massa;

                DiasAno.text = planeta.DiasAno;

                MeioAmbiente.text = planeta.MeioAmbiente;

            }

        }

        else

        {

            SS.Velocidade_Rotacao = velRotBuffer;

        }

    }

    public void ShowPanel()

    {

        if(!Panel.activeSelf)

        {

            Panel.SetActive(true);

        }

    }

    public void HidePanel()

    {

        if (Panel.activeSelf)

        {

            Panel.SetActive(false);

        }

    }

}

Configuração para Android

Para criar uma Build para dispositivos Android, é necessário configurar nosso projeto com os parâmetros do Android. Para isso vá até:

Selecione a opção de configuração para Android:

Preencha os seguintes campos:

  1. Company Name: IFTM_Oficina
  2. Product Name: Sistema Solar
  3. Marque a Opção: Virtual Reality Supported e Selecione a Opção CardBoard
  4. Package Name: com.IFTM.SistemaSolar
  5. Minimum API Level: 4.4 ‘Kit Kat’

Configuração do SDK Android no Unity

O Unity utiliza o SDK do Android para gerar o APK (executável no Android). A princípio ele vem desconfigurado, devemos configurá-lo. Acesse o menu Preferences.

Clique em External Tools:

No campo SDK, aponte para o destino na sua máquina. Feche a janela.

Hierarquia Final da Cena