[RESOLVIDO] Mudar sprite em outra cena
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Mudar sprite em outra cena
Olá...
Estou com um dúvida... pois, gostaria que ao se escolher o personagem do meu jogo, o seu sprite fosse inserido em um sprite vazio que tem nas outras cenas... consegui mudar o sprite dentro da cena, mas, não consigo fazer playerpref para salvar o sprite e mudar automaticamente nas outras cenas... tentei tb através de acessar a variável pública do outro script, mudando para o sprite da escolhida, mas, nada...
Então, gostaria de saber:
1. É possível mudar sprite desse personagem escolhido, automaticamente nas outras cenas? Se sim, qual é a forma?
Estou com um dúvida... pois, gostaria que ao se escolher o personagem do meu jogo, o seu sprite fosse inserido em um sprite vazio que tem nas outras cenas... consegui mudar o sprite dentro da cena, mas, não consigo fazer playerpref para salvar o sprite e mudar automaticamente nas outras cenas... tentei tb através de acessar a variável pública do outro script, mudando para o sprite da escolhida, mas, nada...
Então, gostaria de saber:
1. É possível mudar sprite desse personagem escolhido, automaticamente nas outras cenas? Se sim, qual é a forma?
joffersoju- Avançado
- PONTOS : 2503
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Mudar sprite em outra cena
olá!
o objeto personagem vc deixou sem sprite e fixou ele no Hierachy em cada uma das cenas?
se for isso, acho melhor vc definir o sprite do personagem escolhido antes de começar o jogo, aí é só instanciar esse personagem em cada cena.
o objeto personagem vc deixou sem sprite e fixou ele no Hierachy em cada uma das cenas?
se for isso, acho melhor vc definir o sprite do personagem escolhido antes de começar o jogo, aí é só instanciar esse personagem em cada cena.
Flávio- MembroAvançado
- PONTOS : 2830
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: [RESOLVIDO] Mudar sprite em outra cena
Oi...
Fiz aqui de um jeito e deu certo...
Pus dois personagens para serem escolhido, um menino e uma menina...
menino
menina
Por fim, no sprite que recebe o selecionado em outra cena
tá funcional...
tem outro jeito mais simples...
Fiz aqui de um jeito e deu certo...
Pus dois personagens para serem escolhido, um menino e uma menina...
menino
- Código:
using UnityEngine;
using UnityEngine.SceneManagement;
public class PersonaH : MonoBehaviour
{
public static int menino = 0;
void OnMouseDown()
{
menino++;
PlayerPrefs.SetInt("Personagem1", menino);
SceneManager.LoadScene("MenuInstrucoes");
}
}
menina
- Código:
using UnityEngine;
using UnityEngine.SceneManagement;
public class PersonaM : MonoBehaviour
{
public static int menina = 0;
void OnMouseDown()
{
menina++;
PlayerPrefs.SetInt("Personagem0", menina);
SceneManager.LoadScene("MenuInstrucoes");
}
}
Por fim, no sprite que recebe o selecionado em outra cena
- Código:
using UnityEngine;
public class PersonaEscolhida : MonoBehaviour
{
private SpriteRenderer personagem;
public Sprite[] persona;
void Start()
{
personagem = GetComponent<SpriteRenderer>();
if (PersonaM.menina == 1)
{
personagem.sprite = persona[0];
}
else
{
personagem.sprite = persona[1];
}
}
}
tá funcional...
tem outro jeito mais simples...
joffersoju- Avançado
- PONTOS : 2503
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Mudar sprite em outra cena
joffersoju escreveu:Oi...
Fiz aqui de um jeito e deu certo...
Pus dois personagens para serem escolhido, um menino e uma menina...
menino
- Código:
using UnityEngine;
using UnityEngine.SceneManagement;
public class PersonaH : MonoBehaviour
{
public static int menino = 0;
void OnMouseDown()
{
menino++;
PlayerPrefs.SetInt("Personagem1", menino);
SceneManager.LoadScene("MenuInstrucoes");
}
}
menina
- Código:
using UnityEngine;
using UnityEngine.SceneManagement;
public class PersonaM : MonoBehaviour
{
public static int menina = 0;
void OnMouseDown()
{
menina++;
PlayerPrefs.SetInt("Personagem0", menina);
SceneManager.LoadScene("MenuInstrucoes");
}
}
Por fim, no sprite que recebe o selecionado em outra cena
- Código:
using UnityEngine;
public class PersonaEscolhida : MonoBehaviour
{
private SpriteRenderer personagem;
public Sprite[] persona;
void Start()
{
personagem = GetComponent<SpriteRenderer>();
if (PersonaM.menina == 1)
{
personagem.sprite = persona[0];
}
else
{
personagem.sprite = persona[1];
}
}
}
tá funcional...
tem outro jeito mais simples...
Somente para exemplificar, como não comentei nos códigos...
Os dois primeiros scripts estão nos personagens que serão escolhidos... os dois estão com o contador zerado... ao se clicar em qualquer um dos dois é chamado o ++, passando a variável inteira a valer 1...
Quando chega na cena que o personagem escolhido tem que ser mostrado, declaro os dois sprites (menina[0] e menino[1]), e então, eu acesso a variável do outro script e vejo qual dos playerpref que vale 1... o que valer é o que vai ser mostrado...
E que acharam? Sei que pode ser uma saída tosca, mais, ainda preciso aprender muito... fiquei umas duas horas para conseguir isso daí...
joffersoju- Avançado
- PONTOS : 2503
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Mudar sprite em outra cena
essa linha PlayerPrefs vc pode descartar, não há necessidade, vai funcionar assim mesmo.
Mas se vc quisesse usar PlayerPrefs, vc tem que saber o seguinte, vc sempre usa duas expressoes: PlayerPrefs.SetInt e PlayerPrefs.GetInt
Quando vc chama PlayerPrefs.SetInt, vc está criando uma chave que fica armazenada no pc.
Ex de uso:
PlayerPrefs.SetInt("Personagem1", menino);
PlayerPrefs.GetInt("Personagem1");
SetInt é usado para pegar um valor, no seu caso está armazenando o valor de menino ou menina, dependendo de qual vc clica com o mouse.
GetInt retorna o valor que a chave PlayerPrefs armazenou.
Fazendo seu codigo com PlayerPrefs, ficaria assim:
HasKey significa se existe a chave tal.
A chave que for criada vc teria que deleta-la ao sair do jogo, usando PlayerPrefs.DeleteKey("NomeDaChave"); senao toda vez que vc começar o jogo do zero os valores menino ou menina estarão já definidos.
Mas é como eu disse, seu codigo funciona sem vc chamar o PlayerPrefs.
Mas se vc quisesse usar PlayerPrefs, vc tem que saber o seguinte, vc sempre usa duas expressoes: PlayerPrefs.SetInt e PlayerPrefs.GetInt
Quando vc chama PlayerPrefs.SetInt, vc está criando uma chave que fica armazenada no pc.
Ex de uso:
PlayerPrefs.SetInt("Personagem1", menino);
PlayerPrefs.GetInt("Personagem1");
SetInt é usado para pegar um valor, no seu caso está armazenando o valor de menino ou menina, dependendo de qual vc clica com o mouse.
GetInt retorna o valor que a chave PlayerPrefs armazenou.
Fazendo seu codigo com PlayerPrefs, ficaria assim:
- Código:
private SpriteRenderer personagem;
public Sprite[] persona;
void Start() {
personagem = GetComponent<SpriteRenderer>();
if (PlayerPrefs.HasKey("Personagem1")) {
personagem.sprite = persona[1];
}
else if (PlayerPrefs.HasKey("Personagem0")) {
personagem.sprite = persona[0];
}
}
HasKey significa se existe a chave tal.
A chave que for criada vc teria que deleta-la ao sair do jogo, usando PlayerPrefs.DeleteKey("NomeDaChave"); senao toda vez que vc começar o jogo do zero os valores menino ou menina estarão já definidos.
Mas é como eu disse, seu codigo funciona sem vc chamar o PlayerPrefs.
Flávio- MembroAvançado
- PONTOS : 2830
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: [RESOLVIDO] Mudar sprite em outra cena
Flávio escreveu:essa linha PlayerPrefs vc pode descartar, não há necessidade, vai funcionar assim mesmo.
Mas se vc quisesse usar PlayerPrefs, vc tem que saber o seguinte, vc sempre usa duas expressoes: PlayerPrefs.SetInt e PlayerPrefs.GetInt
Quando vc chama PlayerPrefs.SetInt, vc está criando uma chave que fica armazenada no pc.
Ex de uso:
PlayerPrefs.SetInt("Personagem1", menino);
PlayerPrefs.GetInt("Personagem1");
SetInt é usado para pegar um valor, no seu caso está armazenando o valor de menino ou menina, dependendo de qual vc clica com o mouse.
GetInt retorna o valor que a chave PlayerPrefs armazenou.
Fazendo seu codigo com PlayerPrefs, ficaria assim:
- Código:
private SpriteRenderer personagem;
public Sprite[] persona;
void Start() {
personagem = GetComponent<SpriteRenderer>();
if (PlayerPrefs.HasKey("Personagem1")) {
personagem.sprite = persona[1];
}
else if (PlayerPrefs.HasKey("Personagem0")) {
personagem.sprite = persona[0];
}
}
HasKey significa se existe a chave tal.
A chave que for criada vc teria que deleta-la ao sair do jogo, usando PlayerPrefs.DeleteKey("NomeDaChave"); senao toda vez que vc começar o jogo do zero os valores menino ou menina estarão já definidos.
Mas é como eu disse, seu codigo funciona sem vc chamar o PlayerPrefs.
tinha esquecido o getint e nem me dei conta... kkk...
Mas, valeu pois aprendi tanto usando o playerpref como também acessando variáveis de outro script em outra cena...
joffersoju- Avançado
- PONTOS : 2503
REPUTAÇÃO : 4
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Timer pra mudar de cena na unity 2018
» [RESOLVIDO] COMO ANIMAR SEM PRECISAR DE OUTRA CENA??
» [RESOLVIDO] Como mudar o scale de um sprite renderer????
» [RESOLVIDO] Copiar valor de script de outro objeto de outra cena
» [RESOLVIDO] Problema com objeto 3D após mudar cena
» [RESOLVIDO] COMO ANIMAR SEM PRECISAR DE OUTRA CENA??
» [RESOLVIDO] Como mudar o scale de um sprite renderer????
» [RESOLVIDO] Copiar valor de script de outro objeto de outra cena
» [RESOLVIDO] Problema com objeto 3D após mudar cena
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos