Fazer uma seleção de personagens e seguir para o jogo com o personagem escolhido
3 participantes
Página 1 de 1
Fazer uma seleção de personagens e seguir para o jogo com o personagem escolhido
Boa Tarde, Estou com uma dúvida de qualquer melhor forma de fazer uma seleção de personagens, primeiro eu tenho uma cena que seleciona se ele é menino ou menina e depois terei que fazer um jeito de aparece a selecão que ele fez na cena passada ai se for menina mostra só as opções de pele da menina, e a mesma coisa ao contrario se for menino aparece só as opcoes de pele de menino e assim que ele selecionar se é menino ou menina e o tipo de pele, o jogo começará com o personagem certo, qual a melhor maneira de fazer isso?? como tipo salvando as opcoes do personagem ou fazendo do jeito que estou pensando mas acho que dá mais trabalho?? deixo aqui o script que estava pensando sem usar aqueles tipos de arquivos de salvar as configurações, eu acho que poderia ser melhor com esse tipo de salvamento tb para chamar as coisas depois ne ??
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CorPersonagem : MonoBehaviour
{
public GameObject[] BrancoMenino;
public GameObject[] PardoMenino;
public GameObject[] NegroMenino;
public GameObject[] BrancoMenina;
public GameObject[] PardoMenina;
public GameObject[] NegroMenina;
public bool tipoPersonagem;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
tipoPersonagem = GetComponent<selecaoPersonagem>().tipoMenino;
}
public void ChamaBranco()
{
if (tipoPersonagem == true)
{
for (int i = 0; i < BrancoMenino.Length; i++)
{
BrancoMenino[i].SetActive(true);
}
for (int a = 0; a < PardoMenino.Length; a++)
{
PardoMenino[a].SetActive(false);
}
for (int b = 0; b < NegroMenino.Length; b++)
{
NegroMenino[b].SetActive(false);
}
}
else if (tipoPersonagem == false)
{
for (int i = 0; i < BrancoMenina.Length; i++)
{
BrancoMenina[i].SetActive(true);
}
for (int a = 0; a < PardoMenina.Length; a++)
{
PardoMenina[a].SetActive(false);
}
for (int b = 0; b < NegroMenina.Length; b++)
{
NegroMenina[b].SetActive(false);
}
}
}
public void ChamaPardo()
{
if (tipoPersonagem == true)
{
for (int i = 0; i < BrancoMenino.Length; i++)
{
BrancoMenino[i].SetActive(false);
}
for (int a = 0; a < PardoMenino.Length; a++)
{
PardoMenino[a].SetActive(true);
}
for (int b = 0; b < NegroMenino.Length; b++)
{
NegroMenino[b].SetActive(false);
}
}
else if (tipoPersonagem == false)
{
for (int i = 0; i < BrancoMenina.Length; i++)
{
BrancoMenina[i].SetActive(false);
}
for (int a = 0; a < PardoMenina.Length; a++)
{
PardoMenina[a].SetActive(true);
}
for (int b = 0; b < NegroMenina.Length; b++)
{
NegroMenina[b].SetActive(false);
}
}
}
public void ChamaNegro()
{
if (tipoPersonagem == true)
{
for (int i = 0; i < BrancoMenino.Length; i++)
{
BrancoMenino[i].SetActive(false);
}
for (int a = 0; a < PardoMenino.Length; a++)
{
PardoMenino[a].SetActive(false);
}
for (int b = 0; b < NegroMenino.Length; b++)
{
NegroMenino[b].SetActive(true);
}
}
else if (tipoPersonagem == false)
{
for (int i = 0; i < BrancoMenina.Length; i++)
{
BrancoMenina[i].SetActive(false);
}
for (int a = 0; a < PardoMenina.Length; a++)
{
PardoMenina[a].SetActive(false);
}
for (int b = 0; b < NegroMenina.Length; b++)
{
NegroMenina[b].SetActive(true);
}
}
}
}
Última edição por Magnatah em Sex Ago 09, 2019 7:06 pm, editado 1 vez(es) (Motivo da edição : Colocque os Script na Área de Scripts. (Ajuda Bastante Para Ambos os Lados))
lucaspoiob- Membro
- PONTOS : 2822
REPUTAÇÃO : 0
Respeito as regras :
Re: Fazer uma seleção de personagens e seguir para o jogo com o personagem escolhido
Esses Arrays Tem o Mesmo Tamanho?
Magnatah- Instrutor
- PONTOS : 3518
REPUTAÇÃO : 209
Idade : 24
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras :
Re: Fazer uma seleção de personagens e seguir para o jogo com o personagem escolhido
Sim, eles tem o mesmo tamanho, pois cada array chama um personagem praticamente com as mesmas caracteristicasMagnatah escreveu:Esses Arrays Tem o Mesmo Tamanho?
lucaspoiob- Membro
- PONTOS : 2822
REPUTAÇÃO : 0
Respeito as regras :
Re: Fazer uma seleção de personagens e seguir para o jogo com o personagem escolhido
Se os Array tem o Mesmo Tamanho então não há necessidade de tantos "for".
- Código:
using UnityEngine;
public class CorPersonagem : MonoBehaviour
{
public GameObject[] BrancoMenino, PardoMenino, NegroMenino, BrancoMenina, PardoMenina, NegroMenina;
public bool tipoPersonagem;
void Update()
{
tipoPersonagem = GetComponent<selecaoPersonagem>().tipoMenino;
}
public void ChamaBranco()
{
if (tipoPersonagem == true)
{
for (int i = 0; i < BrancoMenino.Length; i++)
{
BrancoMenino[i].SetActive(true);
PardoMenino[i].SetActive(false);
NegroMenino[i].SetActive(false);
}
}
else if (tipoPersonagem == false)
{
for (int i = 0; i < BrancoMenina.Length; i++)
{
BrancoMenina[i].SetActive(true);
PardoMenina[i].SetActive(false);
NegroMenina[i].SetActive(false);
}
}
}
public void ChamaPardo()
{
if (tipoPersonagem == true)
{
for (int i = 0; i < BrancoMenino.Length; i++)
{
BrancoMenino[i].SetActive(false);
PardoMenino[i].SetActive(true);
NegroMenino[i].SetActive(false);
}
}
else if (tipoPersonagem == false)
{
for (int i = 0; i < BrancoMenina.Length; i++)
{
BrancoMenina[i].SetActive(false);
PardoMenina[i].SetActive(true);
NegroMenina[i].SetActive(false);
}
}
}
public void ChamaNegro()
{
if (tipoPersonagem == true)
{
for (int i = 0; i < BrancoMenino.Length; i++)
{
BrancoMenino[i].SetActive(false);
PardoMenino[i].SetActive(false);
NegroMenino[i].SetActive(true);
}
}
else if (tipoPersonagem == false)
{
for (int i = 0; i < BrancoMenina.Length; i++)
{
BrancoMenina[i].SetActive(false);
PardoMenina[i].SetActive(false);
NegroMenina[i].SetActive(true);
}
}
}
}
Magnatah- Instrutor
- PONTOS : 3518
REPUTAÇÃO : 209
Idade : 24
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras :
Re: Fazer uma seleção de personagens e seguir para o jogo com o personagem escolhido
Magnatah escreveu:Se os Array tem o Mesmo Tamanho então não há necessidade de tantos "for".
- Código:
using UnityEngine;
public class CorPersonagem : MonoBehaviour
{
public GameObject[] BrancoMenino, PardoMenino, NegroMenino, BrancoMenina, PardoMenina, NegroMenina;
public bool tipoPersonagem;
void Update()
{
tipoPersonagem = GetComponent<selecaoPersonagem>().tipoMenino;
}
public void ChamaBranco()
{
if (tipoPersonagem == true)
{
for (int i = 0; i < BrancoMenino.Length; i++)
{
BrancoMenino[i].SetActive(true);
PardoMenino[i].SetActive(false);
NegroMenino[i].SetActive(false);
}
}
else if (tipoPersonagem == false)
{
for (int i = 0; i < BrancoMenina.Length; i++)
{
BrancoMenina[i].SetActive(true);
PardoMenina[i].SetActive(false);
NegroMenina[i].SetActive(false);
}
}
}
public void ChamaPardo()
{
if (tipoPersonagem == true)
{
for (int i = 0; i < BrancoMenino.Length; i++)
{
BrancoMenino[i].SetActive(false);
PardoMenino[i].SetActive(true);
NegroMenino[i].SetActive(false);
}
}
else if (tipoPersonagem == false)
{
for (int i = 0; i < BrancoMenina.Length; i++)
{
BrancoMenina[i].SetActive(false);
PardoMenina[i].SetActive(true);
NegroMenina[i].SetActive(false);
}
}
}
public void ChamaNegro()
{
if (tipoPersonagem == true)
{
for (int i = 0; i < BrancoMenino.Length; i++)
{
BrancoMenino[i].SetActive(false);
PardoMenino[i].SetActive(false);
NegroMenino[i].SetActive(true);
}
}
else if (tipoPersonagem == false)
{
for (int i = 0; i < BrancoMenina.Length; i++)
{
BrancoMenina[i].SetActive(false);
PardoMenina[i].SetActive(false);
NegroMenina[i].SetActive(true);
}
}
}
}
Desta forma os personagens já vem com a configuração da tela passada selecionado certinho, tipo se ele selecionar menino, só irá aparecer menino branco, pardo e negro e a mesma coisa se ele selecionar menina aparecera só as meninas branco, pardo e negra??? ele já puxa o que o jogador tinha seleciona na cena passada?? e se eu quiser selecionar o personagem quando for começar o jogo tipo ele selecionou menino branco ai tem que ter um gameobject para cada personagem no jogo tb e usar o setactive tb ne na hora que comecar o game ne??? acho que é a mesma lógica ne?
lucaspoiob- Membro
- PONTOS : 2822
REPUTAÇÃO : 0
Respeito as regras :
Re: Fazer uma seleção de personagens e seguir para o jogo com o personagem escolhido
Eu fiz daquela forma mais está dando um erro aqui: Object reference not set to an instance of an object CorPersonagem.Update()(at Assets/Telas Iniciais/Menu/CorPersonagem.cs:13)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CorPersonagem : MonoBehaviour
{
public GameObject[] BrancoMenino, PardoMenino, NegroMenino, BrancoMenina, PardoMenina, NegroMenina;
public bool tipoPersonagem;
void Update()
{
tipoPersonagem = GetComponent<selecaoPersonagem>().tipoMenino;
}
public void ChamaBranco()
{
if (tipoPersonagem == true)
{
for (int i = 0; i < BrancoMenino.Length; i++)
{
BrancoMenino[i].SetActive(true);
PardoMenino[i].SetActive(false);
NegroMenino[i].SetActive(false);
}
}
else if (tipoPersonagem == false)
{
for (int i = 0; i < BrancoMenina.Length; i++)
{
BrancoMenina[i].SetActive(true);
PardoMenina[i].SetActive(false);
NegroMenina[i].SetActive(false);
}
}
}
public void ChamaPardo()
{
if (tipoPersonagem == true)
{
for (int i = 0; i < BrancoMenino.Length; i++)
{
BrancoMenino[i].SetActive(false);
PardoMenino[i].SetActive(true);
NegroMenino[i].SetActive(false);
}
}
else if (tipoPersonagem == false)
{
for (int i = 0; i < BrancoMenina.Length; i++)
{
BrancoMenina[i].SetActive(false);
PardoMenina[i].SetActive(true);
NegroMenina[i].SetActive(false);
}
}
}
public void ChamaNegro()
{
if (tipoPersonagem == true)
{
for (int i = 0; i < BrancoMenino.Length; i++)
{
BrancoMenino[i].SetActive(false);
PardoMenino[i].SetActive(false);
NegroMenino[i].SetActive(true);
}
}
else if (tipoPersonagem == false)
{
for (int i = 0; i < BrancoMenina.Length; i++)
{
BrancoMenina[i].SetActive(false);
PardoMenina[i].SetActive(false);
NegroMenina[i].SetActive(true);
}
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CorPersonagem : MonoBehaviour
{
public GameObject[] BrancoMenino, PardoMenino, NegroMenino, BrancoMenina, PardoMenina, NegroMenina;
public bool tipoPersonagem;
void Update()
{
tipoPersonagem = GetComponent<selecaoPersonagem>().tipoMenino;
}
public void ChamaBranco()
{
if (tipoPersonagem == true)
{
for (int i = 0; i < BrancoMenino.Length; i++)
{
BrancoMenino[i].SetActive(true);
PardoMenino[i].SetActive(false);
NegroMenino[i].SetActive(false);
}
}
else if (tipoPersonagem == false)
{
for (int i = 0; i < BrancoMenina.Length; i++)
{
BrancoMenina[i].SetActive(true);
PardoMenina[i].SetActive(false);
NegroMenina[i].SetActive(false);
}
}
}
public void ChamaPardo()
{
if (tipoPersonagem == true)
{
for (int i = 0; i < BrancoMenino.Length; i++)
{
BrancoMenino[i].SetActive(false);
PardoMenino[i].SetActive(true);
NegroMenino[i].SetActive(false);
}
}
else if (tipoPersonagem == false)
{
for (int i = 0; i < BrancoMenina.Length; i++)
{
BrancoMenina[i].SetActive(false);
PardoMenina[i].SetActive(true);
NegroMenina[i].SetActive(false);
}
}
}
public void ChamaNegro()
{
if (tipoPersonagem == true)
{
for (int i = 0; i < BrancoMenino.Length; i++)
{
BrancoMenino[i].SetActive(false);
PardoMenino[i].SetActive(false);
NegroMenino[i].SetActive(true);
}
}
else if (tipoPersonagem == false)
{
for (int i = 0; i < BrancoMenina.Length; i++)
{
BrancoMenina[i].SetActive(false);
PardoMenina[i].SetActive(false);
NegroMenina[i].SetActive(true);
}
}
}
}
lucaspoiob- Membro
- PONTOS : 2822
REPUTAÇÃO : 0
Respeito as regras :
Re: Fazer uma seleção de personagens e seguir para o jogo com o personagem escolhido
é por que você está fazendo um getcomponent (no update, o que já é ruim) de um codigo que não está associado no objeto.
Tópicos semelhantes
» [SELEÇÃO DE PERSONAGENS]
» Seleção de Personagens
» Sistema de rondas // Seleção de Personagens
» Personagem seguir o jogador
» Seleção de personagens sem usar ele como prefab
» Seleção de Personagens
» Sistema de rondas // Seleção de Personagens
» Personagem seguir o jogador
» Seleção de personagens sem usar ele como prefab
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos