0% acharam este documento útil (0 voto)
6 visualizações15 páginas

Guia Completo de Programação Unity

O guia apresenta uma introdução à programação na Unity, abordando tipos de dados, palavras-chave da linguagem C#, e elementos específicos da Unity como MonoBehaviour e eventos automáticos. Ele inclui exemplos práticos de movimento, colisões e sistemas de gameplay, como inventário e dano, além de boas práticas e ferramentas úteis. Por fim, o documento detalha a criação de um sistema de inventário visual, incluindo scripts e a interface no Unity.

Enviado por

JUMP FORCE
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
6 visualizações15 páginas

Guia Completo de Programação Unity

O guia apresenta uma introdução à programação na Unity, abordando tipos de dados, palavras-chave da linguagem C#, e elementos específicos da Unity como MonoBehaviour e eventos automáticos. Ele inclui exemplos práticos de movimento, colisões e sistemas de gameplay, como inventário e dano, além de boas práticas e ferramentas úteis. Por fim, o documento detalha a criação de um sistema de inventário visual, incluindo scripts e a interface no Unity.

Enviado por

JUMP FORCE
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Beleza, aqui está TUDO compilado em um único guia — completo, direto e objetivo,

estilo Gen Z pra tu mergulhar no mundo da programação na Unity com tudo


explicadinho:

Unity Programming Guide – Palavras-


chave, Sistemas e Estrutura
1. Tipos de Dados Comuns
• int → número inteiro (ex: int vidas = 3;)
• float → número decimal, sempre com f (ex: float velocidade = 5.5f;)
• bool → verdadeiro/falso (ex: bool vivo = true;)
• string → texto entre aspas (ex: string nome = "Saske";)
• char → caractere único (ex: char letra = 'A';)
• Vector2 / Vector3 → vetores 2D/3D pra posição, direção (ex: new
Vector3(0,1,0);)

2. Palavras-chave da Linguagem C#
• public / private → visibilidade da variável ou método
• void → função que não retorna nada
• return → retorna valor (em funções que retornam algo)
• if / else / switch → estruturas condicionais
• for / while / foreach → loops de interação
• new → instancia objetos (ex: new GameObject())
• class → declaração de classe (ex: public class Player : MonoBehaviour)

3. Unity Specific
• MonoBehaviour → classe base dos scripts Unity
• Start(), Update(), FixedUpdate() → eventos automáticos da Unity
• Transform → controla posição, rotação, escala
• [Link] → tempo entre frames, pra movimento frame-rate
independente
• Rigidbody → adiciona física (gravidade, colisões)
• Collider → detecção de colisões (Box, Sphere, Mesh…)
• Animator → controla animações via parâmetros
• AudioSource → reproduz sons
• Camera → visão da cena ou jogador

4. Exemplos de Combinação (Junções)

👉 Exemplo: Movimento com Translate

public float velocidade = 5f;

void Update() {
float x = [Link]("Horizontal") * velocidade *
[Link];
float z = [Link]("Vertical") * velocidade *
[Link];
[Link](x, 0, z);
}

• public float → variável editável no Inspector


• Update() → roda todo frame
• [Link]() → pega input WASD ou setas
• [Link]() → move o objeto

👉 Exemplo: Detector de Colisão com Inimigo

void OnCollisionEnter(Collision col) {


if ([Link] == "Inimigo") {
vida -= 10;
}
}

• OnCollisionEnter() → evento automático da Unity


• Collision → objeto que representa a colisão
• tag → rótulo pra identificar objetos
👉 Exemplo: Função de Tomar Dano

public void TomarDano(int dano) {


vida -= dano;
if (vida <= 0) {
Morrer();
}
}

void Morrer() {
Destroy(gameObject);
}

• public void → método visível e que não retorna nada


• int dano → parâmetro tipo inteiro
• Destroy() → remove o objeto da cena

5. Sistemas de Gameplay Comuns

💥 Sistema de Dano / Vida

public int vida = 100;

public void TomarDano(int dano) {


vida -= dano;
if (vida <= 0) {
Morrer();
}
}

void Morrer() {
Destroy(gameObject);
}
🎒 Inventário Básico

public List<string> inventario = new List<string>();

void ColetarItem(string item) {


[Link](item);
[Link]("Item coletado: " + item);
}

void MostrarInventario() {
foreach (string item in inventario) {
[Link]("Tem: " + item);
}
}

🎭 Sistema de Animação com Animator

Animator anim;

void Start() {
anim = GetComponent<Animator>();
}

void Update() {
float mover = [Link]("Vertical");
[Link]("Velocidade", [Link](mover));

if ([Link]([Link])) {
[Link]("Pular");
}
}

No Animator Controller: parâmetros Velocidade (float) e Pular (trigger).


6. Conhecimentos Essenciais pra Melhorar

⚙️ Conceitos Fundamentais

• Variáveis, funções, condicionais, loops, listas, objetos, herança,


Start/Update/FixedUpdate

🧩 Sistemas Comuns de Gameplay

• Dano/Vida, Inventário, Coleta, Crafting, Save/Load (PlayerPrefs), UI/HUD,


Animações, Sons, Inimigos (IA simples), Diálogos

🏛️ Sistemas Base Comuns em Jogos Maiores

• Missões, XP/Level, tempo (dia/noite), crafting e construção, status (fome, sede,


energia), geração procedural, spawner de NPCs/inimigos

🔄 Interação entre Objetos

• OnTriggerEnter / OnCollisionEnter, CompareTag(),


FindObjectOfType<T>(), Invoke(), Coroutines pra espera

🔍 Conceitos Avançados

• Coroutines (yield return), Singleton (GameManager único),


ScriptableObjects, Delegates/Eventos, NavMesh (IA), Raycast (mira/visão), Lerp
/ SmoothDamp (movimentos suaves)

🧼 Boas Práticas / Organização

• Código modular: separar por arquivos


• Nomeação clara (variáveis, métodos)
• Evitar lógica pesada dentro do Update()
• Reutilizar com funções
• Comentar o importante, manter estruturado

🛠️ Ferramentas da Unity

• Console: erros e logs


• Profiler: performance
• Inspector: editar variáveis em tempo real
• Gizmos: debug visual na cena
• Visual Studio: IDE com IntelliSense

7. Por que cada coisa importa?


• Saber os tipos e palavras-chave é o mínimo pra programar
• Unity-specific (como MonoBehaviour, Update, Animator) são a cola do game
• Entender como combinar input, movimento, colisões, animações te ajuda a
criar gameplay real
• Criar sistemas como inventário, dano, crafting faz o jogo funcionar como um
jogo de verdade
• Coroutines, Singletons e ScriptableObjects permitem código mais limpo,
modular e escalável
• Boas práticas e uso de ferramentas te salvam de bugs e te fazem ganhar tempo

Fechou! Aqui vai o guia completo e direto pra tu criar um sistema de inventário com
slots visuais na tela na Unity (em C# + UI), com funções de adicionar, usar e
deitar/jogar fora os itens. É tipo os jogos de sobrevivência ou RPG mesmo.

🎒 SISTEMA DE INVENTÁRIO NA UNITY —


GUIA COMPLETO
📦 1. Estrutura Básica
Cria um script chamado [Link] com a definição de um item simples:

using UnityEngine;

[[Link]]
public class Item {
public string nome;
public Sprite icone;
public bool consumivel;
}

🎯 2. Script do Inventário ([Link])


using [Link];
using UnityEngine;

public class Inventario : MonoBehaviour


{
public static Inventario instancia;
public List<Item> itens = new List<Item>();
public int tamanhoMaximo = 20;

private void Awake() {


instancia = this;
}

public bool AdicionarItem(Item novoItem) {


if ([Link] >= tamanhoMaximo) return false;
[Link](novoItem);
[Link]();
return true;
}

public void UsarItem(int index) {


if (index >= [Link]) return;
Item item = itens[index];

[Link]("Usou item: " + [Link]);

if ([Link]) {
[Link](index);
[Link]();
}
}
public void DeitarItem(int index) {
if (index >= [Link]) return;

[Link]("Jogou fora o item: " + itens[index].nome);


[Link](index);
[Link]();
}
}

🖼️ 3. Interface Visual ([Link])


using UnityEngine;
using [Link];

public class UIInventario : MonoBehaviour


{
public static UIInventario instancia;
public Transform slotsPai;
public GameObject prefabSlot;

private void Awake() {


instancia = this;
}

public void AtualizarUI() {


foreach (Transform filho in slotsPai) {
Destroy([Link]);
}

for (int i = 0; i < [Link]; i++) {


GameObject slot = Instantiate(prefabSlot, slotsPai);
[Link](0).GetComponent<Image>().sprite
= [Link][i].icone;

int index = i;

[Link](1).GetComponent<Button>().[Link]
r(() => {
[Link](index);
});

[Link](2).GetComponent<Button>().[Link]
r(() => {
[Link](index);
});
}
}
}

🧱 4. Criando a UI no Unity (Canvas)


No Unity, faz isso:

1. Cria um Canvas → Panel (ex: chamado "InventarioPanel")


2. Dentro do painel:
a. Cria um Empty GameObject (nomeia de "SlotsPai") com Horizontal
Layout Group
b. Marca Child Force Expand = false
3. Cria um PrefabSlot com:
a. Imagem do item (Image)
b. Botão "Usar" (Button)
c. Botão "Deitar" (Button)
4. Linka tudo nos campos do script UIInventario

✅ 5. Exemplo de Uso no Jogo


public class Coletor : MonoBehaviour
{
public Item itemColetavel;

private void OnTriggerEnter(Collider other) {


if ([Link]("Player")) {
[Link](itemColetavel);
Destroy(gameObject);
}
}
}

📌 6. Resultado
• Cada item tem nome e ícone
• Tu podes adicionar itens com AdicionarItem()
• No slot da UI:
o Botão "Usar" consome o item
o Botão "Deitar" remove o item da lista
• Inventário visível em tempo real com slots bonitinhos

Demorou! Vou te explicar passo a passo, sem enrolação, como criar um inventário
com slots visuais na tela, que permite adicionar, usar e jogar fora itens. É estilo jogo
de sobrevivência/RPG.

🪜 ETAPA 1 — Criar o tipo "Item"

1.1 Cria um script C# chamado [Link]

Esse script é só a definição de um item:

using UnityEngine;

[[Link]]
public class Item {
public string nome;
public Sprite icone;
public bool consumivel;
}

O que faz:
• nome: nome do item
• icone: imagem que aparece no slot
• consumivel: se o item desaparece ao usar

🪜 ETAPA 2 — Criar o Sistema de Inventário

2.1 Cria um script chamado [Link]

Esse script guarda os itens e tem funções de adicionar, usar e jogar fora:

using [Link];
using UnityEngine;

public class Inventario : MonoBehaviour


{
public static Inventario instancia;
public List<Item> itens = new List<Item>();
public int tamanhoMaximo = 20;

private void Awake() {


instancia = this;
}

public bool AdicionarItem(Item novoItem) {


if ([Link] >= tamanhoMaximo) return false;
[Link](novoItem);
[Link]();
return true;
}

public void UsarItem(int index) {


if (index >= [Link]) return;
Item item = itens[index];

[Link]("Usou item: " + [Link]);

if ([Link]) {
[Link](index);
[Link]();
}
}

public void DeitarItem(int index) {


if (index >= [Link]) return;
[Link]("Jogou fora: " + itens[index].nome);
[Link](index);
[Link]();
}
}

O que faz:

• Guarda os itens em uma lista


• Permite adicionar, usar e deitar item
• Atualiza a interface toda vez que muda

🪜 ETAPA 3 — Criar a Interface Visual (UI)

3.1 Cria um novo script chamado [Link]:

using UnityEngine;
using [Link];

public class UIInventario : MonoBehaviour


{
public static UIInventario instancia;
public Transform slotsPai;
public GameObject prefabSlot;

private void Awake() {


instancia = this;
}

public void AtualizarUI() {


foreach (Transform filho in slotsPai) {
Destroy([Link]);
}

for (int i = 0; i < [Link]; i++) {


GameObject slot = Instantiate(prefabSlot, slotsPai);
[Link](0).GetComponent<Image>().sprite
= [Link][i].icone;

int index = i;

[Link](1).GetComponent<Button>().[Link]
r(() => {
[Link](index);
});

[Link](2).GetComponent<Button>().[Link]
r(() => {
[Link](index);
});
}
}
}

🪜 ETAPA 4 — Montar a UI no Unity (Canvas)

4.1 No Hierarchy:

• Cria um Canvas > Panel (nome: "InventarioPanel")


• Dentro do painel, cria um Empty GameObject chamado SlotsPai
o Adiciona componente Horizontal Layout Group
o Marca Child Force Expand como false

4.2 Cria o PrefabSlot (1 slot de inventário)

1. Cria um GameObject vazio (nome: SlotItem)


2. Dentro dele:
a. Um Image (para o ícone do item)
b. Um Button com texto "Usar"
c. Um Button com texto "Deitar"
3. Organiza esses objetos no prefab e salva ele como Prefab
4.3 Arrasta para os scripts:

• No script [Link], linka:


o slotsPai → aquele Empty GameObject com layout
o prefabSlot → teu prefab com botão e ícone

🪜 ETAPA 5 — Testar o sistema (coletar item)

5.1 Cria um script chamado [Link]

Esse é pra coletar o item ao encostar:

public class Coletor : MonoBehaviour


{
public Item itemColetavel;

private void OnTriggerEnter(Collider other) {


if ([Link]("Player")) {
[Link](itemColetavel);
Destroy(gameObject);
}
}
}

1. Adiciona Collider com IsTrigger ativado


2. Coloca esse script no item de cena (tipo “Coco”)
3. No Inspector, linka um item com ícone e nome

✅ O QUE TU TERÁ NO FINAL

✔ Inventário visual com slots na tela

✔ Cada slot mostra o ícone do item

✔ Botão “Usar” consome (se for consumível)


✔ Botão “Deitar” remove da lista

✔ Sistema organizado e expansíve

Você também pode gostar