[TUTORIAL] Criar um Array ( lista de objetos )
+6
RenanMSV
hellkiller
Chilinger
Dionilson
ClapTrap
MarcosSchultz
10 participantes
Página 1 de 1
[TUTORIAL] Criar um Array ( lista de objetos )
Isto é extremamente util quando você quer trabalhar com uma quantidade indefinida de objetos, por ex, você quer declarar 10 sons em um script, para poder usa-los durante algum momento do jogo. você pode simplesmente declarar uma array para guardar todos. ex:
- Código:
public AudioClip[] audios;
colocando " [] " depois do tipo da variavel, você transforma ela em uma array. com isto, ela automaticamente cria listas de objetos para serem alocados. Na aba inspector do objeto que contem o script, será criado um novo campo, que pedirá para você preenche-lo com a quantidade de objetos. coloque um valor e dê um Enter. após isso, surgirão campos para alocar os objetos, sons, valores, etc, conforme a variavel.
As array são praticamente de todos os tipos, podem ser de audios, textos, texturas, vetores, etc, etc, etc. ex:
- Código:
public Vector3[] vetores;
public AudioClip[] audios;
public Texture[] texturas;
public GameObject[] objetos;
public Transform[] transform;
public int[] numerosInteiros;
public float[] numerosQuebrados;
public bool[] verdadeiro_falso;
public Camera[] cameras;
public Light [] luzes;
public string [] textos;
e assim vai indo. crie listas e mais listas conforme a sua necessidade.
após a lista ser criada, o seu campo na aba inspector será ajustado automaticamente pela propria unity, por ex:
você declara um Vector3[], então surgirá um novo campo que aloca 3 valores ( x, y, z )
você declara um AudioClip[], então surgirá um novo campo para você linkar o audio.
Depois que a lista foi criada, existem vários metodos para " alcançar " o som correto dentro do script. Quando você cria um array, eles ficam em ordem dentro da lista, do numero 0 até onde for sua lista.
Se você linkou uma luz no 3 " slot " da sua lista, ela será o numero 2. e para acessar esta luz basta colocar o numero " 2 " entre os colchetes. ex:
- Código:
luzes [2].enabled = false; // aqui eu desativo a terceira luz da lista
Para audio é um pouco diferente, você tem que designar qual é o audio.clip antes de executar o Play. ex:
- Código:
audio.clip = audios[2]; // aqui eu digo que o audioClip é o terceiro audio da lista
audio.Play(); // aqui eu dou um play no audio
Para acessar uma variavel int ou float é a mesma coisa, ex:
- Código:
int valorNovoInteiro = numerosInteiros [2]; // aqui eu igualo a variavel valorNovoInteiro ao terceiro valor da lista
float valorNovoQuebrado = numerosQuebrados [2]; // aqui eu igualo a variavel numerosQuebrados ao terceiro valor da lista
Para cameras é o mesmo sistema de objetos, ou da luz, ex:
- Código:
cameras[2].enabled = false; // desativa a terceira camera da lista
OUTRO COMANDO BEM UTIL AGORA ( Length )
Este comando consiste em achar todos os elementos de sua matriz, ex:
- Código:
public int valorMaximo; // esta variavel recebera o valor maximo dentro da matriz
public int[] valores; // esta é a array
void Start (){
valorMaximo = valores.Length; // este comando pega o numero máximo de elementos que foram declarados na matriz
}
Length também é interessante quando você está trabalhando com for , ex: ( for da variavel cameras )
- Código:
for (int i = 0; i < cameras.Length; i++) { // não preciso declarar um valor maximo para o for, apenas pego o valor maximo da lista com o Length
}
Para esvaziar os elementos de uma variavel, basta fazer um loop, ex:
- Código:
for (int i = 0; i < cameras.Length; i++) { // isto fará um loop e irá percorrer todos os elementos da lista
cameras[i] = null; // isto tornará o elemento nulo ( ira deixar o slot vazio )
}
há muito mais a ser adicionado neste tutorial, más é muito conteúdo. Deixarei apenas esta base para dar entendimento do principal sobre Array ^^
Última edição por MarcosSchultz em Ter Jun 07, 2016 8:45 pm, editado 3 vez(es)
ClapTrap- Membro
- PONTOS : 3707
REPUTAÇÃO : 8
Respeito as regras :
Re: [TUTORIAL] Criar um Array ( lista de objetos )
To tentando fazer uma coisa com uma lista mas não consigo juntar as duas coisas e fazer funcionar.
Eu tenho um painel com 4 slots e um botão, o jogador precisa encontrar os 4 itens que pertence a cada um desses slots e ai sim poder acionar o botão para que outra coisa aconteça como sair fogo de algum lugar. Porém não consigo fazer isso, to fazendo um JavaScript pra ver se e mais fácil mas não funciona, eu pego os itens mas o botão não ativa não consigo entender e nem arrumar isso. Pode me ensinar a fazer isso? To tentando usar uma lista.
Eu tenho um painel com 4 slots e um botão, o jogador precisa encontrar os 4 itens que pertence a cada um desses slots e ai sim poder acionar o botão para que outra coisa aconteça como sair fogo de algum lugar. Porém não consigo fazer isso, to fazendo um JavaScript pra ver se e mais fácil mas não funciona, eu pego os itens mas o botão não ativa não consigo entender e nem arrumar isso. Pode me ensinar a fazer isso? To tentando usar uma lista.
Dionilson- Iniciante
- PONTOS : 3633
REPUTAÇÃO : 2
Idade : 32
Respeito as regras :
Re: [TUTORIAL] Criar um Array ( lista de objetos )
Não entendi exatamente o que você quer fazer, más aparentemente não precisaria usar uma Array...
poderia por favor criar um novo tópico especificando bem a sua dúvida para eu poder resolve-la?
poderia por favor criar um novo tópico especificando bem a sua dúvida para eu poder resolve-la?
Re: [TUTORIAL] Criar um Array ( lista de objetos )
Se fosse texture no lugar de string como eu usaria.
Chilinger- MembroAvançado
- PONTOS : 4092
REPUTAÇÃO : 42
Idade : 30
Respeito as regras :
Re: [TUTORIAL] Criar um Array ( lista de objetos )
Chilinger
Mendigo de likes aqui!!!
- Código:
private Image[] imagens = new Image[10];//exemplo
Mendigo de likes aqui!!!
hellkiller- Mestre
- PONTOS : 4054
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: [TUTORIAL] Criar um Array ( lista de objetos )
Praticamente tudo que voce colocar [] na frente vai virar um array.
RenanMSV- Instrutor
- PONTOS : 4484
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [TUTORIAL] Criar um Array ( lista de objetos )
hellkiller eu fiz isso mas nao foi
Chilinger- MembroAvançado
- PONTOS : 4092
REPUTAÇÃO : 42
Idade : 30
Respeito as regras :
Re: [TUTORIAL] Criar um Array ( lista de objetos )
Como assim explique me o seu erro(lembrando que se for imagem tem que colocar o UnityEngine.UI)
hellkiller- Mestre
- PONTOS : 4054
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: [TUTORIAL] Criar um Array ( lista de objetos )
add no skype Chilinger2
Chilinger- MembroAvançado
- PONTOS : 4092
REPUTAÇÃO : 42
Idade : 30
Respeito as regras :
Re: [TUTORIAL] Criar um Array ( lista de objetos )
Use
Para usar agora use imagens[0 a numero maximo de imagens q vc colocou]
Tipo
- Código:
using UnityEngine.UI;
public Image [] imagens; // eh preciso ser publico para ser visualizado no inspector.
Para usar agora use imagens[0 a numero maximo de imagens q vc colocou]
Tipo
- Código:
imagens[1].sprite = cachorrinho.jpg;
RenanMSV- Instrutor
- PONTOS : 4484
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [TUTORIAL] Criar um Array ( lista de objetos )
como faço p/ desativar todos os elementos de array?
HudsonJeff- Iniciante
- PONTOS : 3123
REPUTAÇÃO : 1
Respeito as regras :
Re: [TUTORIAL] Criar um Array ( lista de objetos )
- Código:
foreach (GameObject objetos in nomeDaArrayDeGameObjects) {
objetos.SetActive (false);
}
Re: [TUTORIAL] Criar um Array ( lista de objetos )
vlwMarcosSchultz escreveu:
- Código:
foreach (GameObject objetos in nomeDaArrayDeGameObjects) {
objetos.SetActive (false);
}
HudsonJeff- Iniciante
- PONTOS : 3123
REPUTAÇÃO : 1
Respeito as regras :
Re: [TUTORIAL] Criar um Array ( lista de objetos )
como posso medir a distancia dos objetos que estão num array??
Édipo- MembroAvançado
- PONTOS : 4007
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: [TUTORIAL] Criar um Array ( lista de objetos )
Édipo escreveu:como posso medir a distancia dos objetos que estão num array??
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class inimigo : MonoBehaviour {
public List<GameObject> inimigos;
public GameObject[] tagPlayer;
public bool Red= false, Blue=false;
public float[] Dist;
public float Menor, Maior;
public GameObject Selecionado;
public GameObject[] temp;
// Use this for initialization
void Start () {
tagPlayer = GameObject.FindGameObjectsWithTag("Player");
}
// Update is called once per frame
void Update () {
if (Red)
{
inimigos = new List<GameObject>();
for (int i = 0; i < tagPlayer.Length; i++)
{
if (tagPlayer[i].GetComponent<CharacterStatus>().Blue)
{
inimigos.Add(tagPlayer[i]);
}
}
}
if (Blue)
{
inimigos = new List<GameObject>();
for (int i = 0; i < tagPlayer.Length; i++)
{
if (tagPlayer[i].GetComponent<CharacterStatus>().Red)
{
inimigos.Add(tagPlayer[i]);
}
}
}
temp = inimigos.ToArray();
Dist = new float[temp.Length];
for (int i = 0; i < temp.Length; i++)
{
Dist[i] = Vector3.Distance(temp[i].transform.position, transform.position);
if (i == 0)
{
Maior = Dist[i];
Menor = Dist[i];
}
if (Dist[i] > Maior)
{
Maior = Dist[i];
}
if (Dist[i] < Menor)
{
Menor = Dist[i];
Selecionado = temp[i];
}
}
}
}
pessoal CRIEI ESTE CODIGO , PARA MEDIR A MENOR DISTANCIA ENTRE O INIMIGOS , POREM ELE NAO ATUALIZA . EXEMPLO SE O INIMIGO SE MOVE ELE SEMPRE FICA NO MESMO INIMIGO, eu queria que conforme ele ficasse perto de um outro inimigo ele mudasse o target dele para o outro inimigo.. alguem pode me ajudar
Re: [TUTORIAL] Criar um Array ( lista de objetos )
Bom dia/tarde/noite galera. Estou tentando fazer um script para trocar objetos dentro de um array. Mas me deu um branco de como fazer com que ao criar o objeto seguinte, ele apague o anterior. No script esta criando os objetos normalmente.
obrigado à quem poder me dar uma luz.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TrocaObjeto : MonoBehaviour {
public GameObject[] luminaria;
private int Indice = 1;
public void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
if (Indice < luminaria.Length)
{
var temp = Instantiate(luminaria[Indice], transform.position, transform.rotation);
Indice++;
}
else
{
var temp = Instantiate(luminaria[0], transform.position, transform.rotation);
Indice = 1;
}
}
}
}
obrigado à quem poder me dar uma luz.
RyanFL- Iniciante
- PONTOS : 2919
REPUTAÇÃO : 0
Idade : 32
Áreas de atuação : Arquitetura, Maquete Eletrônica, Cenários Reais/ Fantasy
Respeito as regras :
Re: [TUTORIAL] Criar um Array ( lista de objetos )
RyanFL escreveu:Bom dia/tarde/noite galera. Estou tentando fazer um script para trocar objetos dentro de um array. Mas me deu um branco de como fazer com que ao criar o objeto seguinte, ele apague o anterior. No script esta criando os objetos normalmente.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TrocaObjeto : MonoBehaviour {
public GameObject[] luminaria;
private int Indice = 1;
public void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
if (Indice < luminaria.Length)
{
var temp = Instantiate(luminaria[Indice], transform.position, transform.rotation);
Indice++;
}
else
{
var temp = Instantiate(luminaria[0], transform.position, transform.rotation);
Indice = 1;
}
}
}
}
obrigado à quem poder me dar uma luz.
Por favor, crie um tópico específico para a sua dúvida, que já já respondemos.
Tópicos semelhantes
» [TUTORIAL] Relacionar botões de uma array com objetos de outra array
» [RESOLVIDO] Pegar Objetos Filhos e Adicionar em uma Lista ou Array para Usálos como Waypoints
» [RESOLVIDO] Como criar um botãoUI que liga e desliga uma lista de objetos?
» [TUTORIAL] Trocar a textura de um objeto pelas texturas de uma lista ( array ) seguindo a ordem da mesma.
» Como adicionar todos materiais de um Obj em um Array ou Lista?
» [RESOLVIDO] Pegar Objetos Filhos e Adicionar em uma Lista ou Array para Usálos como Waypoints
» [RESOLVIDO] Como criar um botãoUI que liga e desliga uma lista de objetos?
» [TUTORIAL] Trocar a textura de um objeto pelas texturas de uma lista ( array ) seguindo a ordem da mesma.
» Como adicionar todos materiais de um Obj em um Array ou Lista?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos