[RESOLVIDO] Salvar Nível de jogo!!
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Salvar Nível de jogo!!
Andei assistindo um vídeo do Marcos de como salvar cena, porem ele ensina como salvar posição do player e tals, porem eu gostaria de salvar apenas a cena. Um exemplo é , que eu saia do jogo eu quando eu volto ele comesse no nível que eu parei, mas sem salvar aonde meu personagem estava, mas sim, começando do zero esse nível!!
Edivandro2706- Avançado
- PONTOS : 2088
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
bom da para usar playerprefs pra isso
é so colocar uma variavel string em um script novo chamado ScriptFases e colocar esse script no inicio do jogo, mas o mais no inicio possivel.
E agora colocar o script a seguir em toda cena ou acrescentar em um script que ja esteja em uso em todas as cenas
qualquer coisa de não funcionar coloque o ScriptFases em um objeto que não seja destruido ao passar de cena.
se os codigos nao ficarem certo aqui no forum é por causa que vai la se sabe neh
//--------------------------------------------------------
uma coisa é que eu esqueci é
// -----------------------------------------------------
outra coisa preencha a string com o nome da primeira fase
assim:
public string static faseQueFicou = o nome da primeira fase e feche com ;
é so colocar uma variavel string em um script novo chamado ScriptFases e colocar esse script no inicio do jogo, mas o mais no inicio possivel.
- Código:
public string ScriptFases : MonoBehaviour {
public string faseQueFicou;
void Start(){
if(PlayerPrefs.Haskey("Fase")){
faseQueFicou = PlayerPrefs.GetString("Fase",faseQueFicou);
}
}
E agora colocar o script a seguir em toda cena ou acrescentar em um script que ja esteja em uso em todas as cenas
- Código:
using UnityEngine.SceneManagement;
void Start(){
ScriptFases.faseQueFicou = SceneManager.GetActiveScene().name;
PlayerPrefs.SetString("Fase",ScriptFases.faseQueFicou);
}
}
qualquer coisa de não funcionar coloque o ScriptFases em um objeto que não seja destruido ao passar de cena.
se os codigos nao ficarem certo aqui no forum é por causa que vai la se sabe neh
//--------------------------------------------------------
uma coisa é que eu esqueci é
- Código:
public string ScriptFases : MonoBehaviour {
public static string faseQueFicou; // coloque public static ao invés de public somente para voce poder acessar essa string por outros scripts
void Start(){
if(PlayerPrefs.Haskey("Fase")){
faseQueFicou = PlayerPrefs.GetString("Fase",faseQueFicou);
}
}
// -----------------------------------------------------
outra coisa preencha a string com o nome da primeira fase
assim:
public string static faseQueFicou = o nome da primeira fase e feche com ;
Última edição por Fagner em Dom Fev 02, 2020 1:47 pm, editado 1 vez(es) (Motivo da edição : Agregar as novas respostas em uma só.)
poyser- Avançado
- PONTOS : 3033
REPUTAÇÃO : 46
Idade : 26
Áreas de atuação : https://play.google.com/store/apps/dev?id=6312026995180986052
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
Está dando esses 3 erros:
Assets\faseQueFicou.cs(10,3): error CS0120: An object reference is required for the non-static field, method, or property 'ScriptFases.faseQueFicou'
Assets\faseQueFicou.cs(11,32): error CS0120: An object reference is required for the non-static field, method, or property 'ScriptFases.faseQueFicou'
Assets\ScriptFases.cs(10,18): error CS0117: 'PlayerPrefs' does not contain a definition for 'Haskey'
Assets\faseQueFicou.cs(10,3): error CS0120: An object reference is required for the non-static field, method, or property 'ScriptFases.faseQueFicou'
Assets\faseQueFicou.cs(11,32): error CS0120: An object reference is required for the non-static field, method, or property 'ScriptFases.faseQueFicou'
Assets\ScriptFases.cs(10,18): error CS0117: 'PlayerPrefs' does not contain a definition for 'Haskey'
Edivandro2706- Avançado
- PONTOS : 2088
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
Os scripts ficaram assim, porem está dando diversos erros!!
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class faseQueFicou : MonoBehaviour
{
// Start is called before the first frame update
void Start(){
ScriptFases.faseQueFicou = SceneManager.GetActiveScene().name;
PlayerPrefs.SetString("Fase",ScriptFases.faseQueFicou);
}
// Update is called once per frame
void Update()
{
}
}
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public string ScriptFases : MonoBehaviour
{
public static string faseQueFicou;
void Start(){
if(PlayerPrefs.Haskey("Fase")){
faseQueFicou = PlayerPrefs.GetString("Fase",faseQueFicou);
}
}
// Update is called once per frame
void Update()
{
}
}
Edivandro2706- Avançado
- PONTOS : 2088
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
Edivandro2706 escreveu:Os scripts ficaram assim, porem está dando diversos erros!!
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class faseQueFicou : MonoBehaviour
{
// Start is called before the first frame update
void Start(){
ScriptFases.faseQueFicou = SceneManager.GetActiveScene().name;
PlayerPrefs.SetString("Fase",ScriptFases.faseQueFicou);
}
// Update is called once per frame
void Update()
{
}
}
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public string ScriptFases : MonoBehaviour
{
public static string faseQueFicou;
void Start(){
if(PlayerPrefs.Haskey("Fase")){
faseQueFicou = PlayerPrefs.GetString("Fase",faseQueFicou);
}
}
// Update is called once per frame
void Update()
{
}
}
no primeiro codigo vc colocou o nome da variavel como nome do script tente mudar isso apangando o script faseQueFicou e criando um novo script com o mesmo codigo porem com um nome diferente
poyser- Avançado
- PONTOS : 3033
REPUTAÇÃO : 46
Idade : 26
Áreas de atuação : https://play.google.com/store/apps/dev?id=6312026995180986052
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
Talvez esse seja o erro, porém não o único, pois todos os erros q está dando está direcionando a essa linha. Eu troquei o que você falou porém esta continuando dando o erro!!
Edivandro2706- Avançado
- PONTOS : 2088
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
vc apago o script antigo? o script faseQueFicou
poyser- Avançado
- PONTOS : 3033
REPUTAÇÃO : 46
Idade : 26
Áreas de atuação : https://play.google.com/store/apps/dev?id=6312026995180986052
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
vc não pode trocar o nome do script vc necessita criar um novo script caso seja o que vc fez, e apagar o script faseQueFicou para que não de erros
poyser- Avançado
- PONTOS : 3033
REPUTAÇÃO : 46
Idade : 26
Áreas de atuação : https://play.google.com/store/apps/dev?id=6312026995180986052
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
Esses são os erros que está dando agora!!
Edivandro2706- Avançado
- PONTOS : 2088
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Salvar jogo : MonoBehaviour {
// Start is called before the first frame update
void Start() {
ScriptFases.faseQueFicou = SceneManager.GetActiveScene().name;
PlayerPrefs.SetString("Fase",ScriptFases.faseQueFicou);
}
// Update is called once per frame
void Update()
{
}
}
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public string ScriptFases; : MonoBehaviour {
public static string faseQueFicou;
void Start(){
if(PlayerPrefs.Haskey("Fase")){
faseQueFicou = PlayerPrefs.GetString("Fase",faseQueFicou);
}
}
// Update is called once per frame
void Update()
{
}
}
Os scripts estão assim!!!
Edivandro2706- Avançado
- PONTOS : 2088
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
Edivandro2706 escreveu:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Salvar jogo : MonoBehaviour {
// Start is called before the first frame update
void Start() {
ScriptFases.faseQueFicou = SceneManager.GetActiveScene().name;
PlayerPrefs.SetString("Fase",ScriptFases.faseQueFicou);
}
// Update is called once per frame
void Update()
{
}
}
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public string ScriptFases; : MonoBehaviour {
public static string faseQueFicou;
void Start(){
if(PlayerPrefs.Haskey("Fase")){
faseQueFicou = PlayerPrefs.GetString("Fase",faseQueFicou);
}
}
// Update is called once per frame
void Update()
{
}
}
Os scripts estão assim!!!
Se o erro tiver apontando dnv pra linha
public class Salvar jogo : MonoBehaviour
então tente dnv apagar esse script Salvar jogo e criar um novo script com o mesmo codigo, pois creio que não pode haver espaço entre Salvar jogo teria que ser SalvarJogo.
poyser- Avançado
- PONTOS : 3033
REPUTAÇÃO : 46
Idade : 26
Áreas de atuação : https://play.google.com/store/apps/dev?id=6312026995180986052
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
esse script esta errado, poisEdivandro2706 escreveu:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public string ScriptFases; : MonoBehaviour {
public static string faseQueFicou;
void Start(){
if(PlayerPrefs.Haskey("Fase")){
faseQueFicou = PlayerPrefs.GetString("Fase",faseQueFicou);
}
}
// Update is called once per frame
void Update()
{
}
}
public string ScriptFases; : MonoBehaviour {
esta totalmente errado
o ceto é
public class ScriptFases : MonoBehaviour {
edite ele para ver
poyser- Avançado
- PONTOS : 3033
REPUTAÇÃO : 46
Idade : 26
Áreas de atuação : https://play.google.com/store/apps/dev?id=6312026995180986052
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
nessa varial aqui faça isso
public static string faseQueFicou = coloque o nome da primeira fase aki entre "" exemplo: "Stage 1";
outra coisa sempre que vc tiver um script e não necessitar do void Update() sempre apague-o para deixar mais otimizado o teu jogo, pois tera menos updates rodando a todo frame
public static string faseQueFicou = coloque o nome da primeira fase aki entre "" exemplo: "Stage 1";
outra coisa sempre que vc tiver um script e não necessitar do void Update() sempre apague-o para deixar mais otimizado o teu jogo, pois tera menos updates rodando a todo frame
poyser- Avançado
- PONTOS : 3033
REPUTAÇÃO : 46
Idade : 26
Áreas de atuação : https://play.google.com/store/apps/dev?id=6312026995180986052
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
Último erro: skksks
Assets\ScriptFases.cs(10,19): error CS0117: 'PlayerPrefs' does not contain a definition for 'Haskey'
Assets\ScriptFases.cs(10,19): error CS0117: 'PlayerPrefs' does not contain a definition for 'Haskey'
Edivandro2706- Avançado
- PONTOS : 2088
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
kkkk ai é erro meu msm, é que ao invés de Haskey se escreve HasKey.
mano eu aconselho vc baixar o Visual Studio Code, ele é bem leve e contem um plugin da Unity que mostra os erros de sintaxe e autocomplete, isso ajuda muito.
mano eu aconselho vc baixar o Visual Studio Code, ele é bem leve e contem um plugin da Unity que mostra os erros de sintaxe e autocomplete, isso ajuda muito.
poyser- Avançado
- PONTOS : 3033
REPUTAÇÃO : 46
Idade : 26
Áreas de atuação : https://play.google.com/store/apps/dev?id=6312026995180986052
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
se for abaixar, abaixa o plugin c# também, vc pode abaixar todos pelo próprio Visual Studio Code
poyser- Avançado
- PONTOS : 3033
REPUTAÇÃO : 46
Idade : 26
Áreas de atuação : https://play.google.com/store/apps/dev?id=6312026995180986052
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
Acontece ksksksks, Agora é só colocar o ScriptFases no Menu do jogo dentro de um GameObject e o outro script colocar na minha primeira fase e se eu tiver outro nível fazer a mesma coisa. Pelo que eu entendi do vídeo é assim ou estou errado?
Edivandro2706- Avançado
- PONTOS : 2088
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
não é ao contrario, o script Script fases voce coloca na primeira parte que inicia o jogo (de preferencia em um objeto que não seja destruido), crie um objeto novo (exemplo na cena de apresentação do nome do jogo) depois coloque esse script no objeto, dentro do script coloque a seguinte linha de codigo dentro da void Start() do script ScriptFases:
DontDestroyOnLoad(transform.gameObject);
depois pegue o outro script e coloque em um objeto qualquer(não coloque em um objeto que esteja desativado no inicio da fase, isso causa erro não visual no log, faça isso em todas as fases.
DontDestroyOnLoad(transform.gameObject);
depois pegue o outro script e coloque em um objeto qualquer(não coloque em um objeto que esteja desativado no inicio da fase, isso causa erro não visual no log, faça isso em todas as fases.
poyser- Avançado
- PONTOS : 3033
REPUTAÇÃO : 46
Idade : 26
Áreas de atuação : https://play.google.com/store/apps/dev?id=6312026995180986052
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
Uma dúvida, como que vou carregar as outras fazes se nesse script eu coloquei apenas uma cena que seria a "Inicio" ?? Por que, eu tenho vários níveis, daí assim que eu passa-se de nível e eu fosse para o menu e clica-se em jogar novamente eu ia para o nível que eu parei!!
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ScriptFases : MonoBehaviour {
public static string faseQueFicou = "Inicio";
void Start(){
if(PlayerPrefs.HasKey("Fase")) {
faseQueFicou = PlayerPrefs.GetString("Fase",faseQueFicou);
DontDestroyOnLoad(transform.gameObject);
}
}
}
Edivandro2706- Avançado
- PONTOS : 2088
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
ai depende se o seu jo não passa de fase para fase a questão é diferente, agora se vc entra numa fase e depois que completa volta para o menu ai é outras questões, se sua primeira fase tiver o nome de Inicio tudo bem, agora se sua a palavra inicio se refere a outra cena os métodos são diferentes.
se vc carregar o jogador até o menu para que ele escolha entrar na primeira fase, voce deve carregar a cena Menu para o jogar antes, esse script que vc mencionou não tem nada a haver com inicio se o principio for vc levar o jogador primeiramente para a cena Menu, o acima script só serve para pegar o nome da fase, salvar, e depois carregar.
o script funciona assim: vc não tem o nome da primeira fase dai vc preenche a string com a primeira fase, depois como é salvo a fase que ficou vc não utiliza o preenchimento da string, pois nos resgatamos o nome da fase que foi salva e jogamos para dentro da string.
se vc carregar o jogador até o menu para que ele escolha entrar na primeira fase, voce deve carregar a cena Menu para o jogar antes, esse script que vc mencionou não tem nada a haver com inicio se o principio for vc levar o jogador primeiramente para a cena Menu, o acima script só serve para pegar o nome da fase, salvar, e depois carregar.
o script funciona assim: vc não tem o nome da primeira fase dai vc preenche a string com a primeira fase, depois como é salvo a fase que ficou vc não utiliza o preenchimento da string, pois nos resgatamos o nome da fase que foi salva e jogamos para dentro da string.
poyser- Avançado
- PONTOS : 3033
REPUTAÇÃO : 46
Idade : 26
Áreas de atuação : https://play.google.com/store/apps/dev?id=6312026995180986052
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
para levar o jogar para um primeira fase sem Menu, vc deve colocar o nome da sua primeira fase (se for "Inicio") como preenchimento da string, para que depois vc coloque um
coloque esse script em um codigo que não seja o a do ScriptFases.
SceneManager.LoadScene(ScriptFases.faseQueFicou);
para carregar o primeiro nivel ou o nivel que ficou, isso serve para quem quer passar de nivel pra nivel e para quem quer passar de um nivel que o jogador inicia (nivel que ficou) para o menu.
coloque esse script em um codigo que não seja o a do ScriptFases.
SceneManager.LoadScene(ScriptFases.faseQueFicou);
para carregar o primeiro nivel ou o nivel que ficou, isso serve para quem quer passar de nivel pra nivel e para quem quer passar de um nivel que o jogador inicia (nivel que ficou) para o menu.
poyser- Avançado
- PONTOS : 3033
REPUTAÇÃO : 46
Idade : 26
Áreas de atuação : https://play.google.com/store/apps/dev?id=6312026995180986052
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
para isso vc coloca na função do botão jogar (no script que cuida desse botão) o codigo
SceneManager.LoadScene(ScriptFases.faseQueFicou);
assim ele vai para a fase que ficou, independente se for a Fase 1 ou a Fase 2 e assim por diante.
SceneManager.LoadScene(ScriptFases.faseQueFicou);
assim ele vai para a fase que ficou, independente se for a Fase 1 ou a Fase 2 e assim por diante.
poyser- Avançado
- PONTOS : 3033
REPUTAÇÃO : 46
Idade : 26
Áreas de atuação : https://play.google.com/store/apps/dev?id=6312026995180986052
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
poyser escreveu:ai depende se o seu jo não passa de fase para fase a questão é diferente, agora se vc entra numa fase e depois que completa volta para o menu ai é outras questões, se sua primeira fase tiver o nome de Inicio tudo bem, agora se sua a palavra inicio se refere a outra cena os métodos são diferentes.
se vc carregar o jogador até o menu para que ele escolha entrar na primeira fase, voce deve carregar a cena Menu para o jogar antes, esse script que vc mencionou não tem nada a haver com inicio se o principio for vc levar o jogador primeiramente para a cena Menu, o acima script só serve para pegar o nome da fase, salvar, e depois carregar.
o script funciona assim: vc não tem o nome da primeira fase dai vc preenche a string com a primeira fase, depois como é salvo a fase que ficou vc não utiliza o preenchimento da string, pois nos resgatamos o nome da fase que foi salva e jogamos para dentro da string.
O jeito que eu quero fazer é desse jeito que você falou por ultimo. Mas acho que eu estou fazendo algo de errado com o script de que vai nos níveis. Tenho que mudar alguma coisa neles, ou é só jogar o mesmo script do nível1 no do nível2? Pois eu inicio o jogo no menu, "aonde eu coloquei o script ScriptFases" daí eu dou um clik em jogar, então eu passo para o nível1 "aonde tem o script SalvarJogo" então se eu matar alguns personagens eu passo de nível que seria o nível2, "aonde eu coloquei o script SalvarJogo" porem assim que eu saio do jogo. E volto a dar o clik em jogar do menu ele inicia no nível1!! E eu queria que inicia-se no nível2, pois foi aonde eu parei!!
Edivandro2706- Avançado
- PONTOS : 2088
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
Cara, muitooo obrigadoo deu muito certoo. Fazia tempos que eu estava tentando e não conseguia!!!!
Você é foda rapazz <3 <3
Você é foda rapazz <3 <3
Edivandro2706- Avançado
- PONTOS : 2088
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Salvar Nível de jogo!!
que bom que deu certo
poyser- Avançado
- PONTOS : 3033
REPUTAÇÃO : 46
Idade : 26
Áreas de atuação : https://play.google.com/store/apps/dev?id=6312026995180986052
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Como salvar ao fechar o jogo? (Android)
» [RESOLVIDO] salvar a rotação de um objeto e quando iniciar o jogo carregar
» [Resolvido] - É possivel salvar numeros num banco de dados MySql, atraves do meu jogo?
» [RESOLVIDO] Problema depois de passar para nivel 3
» Salvar qualidade do jogo
» [RESOLVIDO] salvar a rotação de um objeto e quando iniciar o jogo carregar
» [Resolvido] - É possivel salvar numeros num banco de dados MySql, atraves do meu jogo?
» [RESOLVIDO] Problema depois de passar para nivel 3
» Salvar qualidade do jogo
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos