Quero começa a desenvolver um jogo de luta porem eu queria aprender a faze
2 participantes
Página 1 de 1
Quero começa a desenvolver um jogo de luta porem eu queria aprender a faze
Estou desenvolvento um jogo em que preciso salvar uma lista muito grande de objetos copiados, preciso salvar se foram destruidos ou nao, ja tentei usar json mas so consegui salvar 1 ID pois usei o mesmo script em todos os objetos, entao quando o primeiro id é criado só salva ele na lista, nao consigo adicionar os outros, preciso salvar tambem se o objeto foi destruido ou nao entre uma cena ou outra e quando o jogador fecha o jogo e abre novamente, preciso que aqueles objetos contiuem destruidos mas nao estou sabendo como fazer, estou começando agora na programação unity entao acredito que nao sei nem 40% do que precisaria saber para fazer um jogo, se alguem puder me dar uma ajuda por favor, ja pensei em usar objetos scripitaveis tambem, porem nao consigo pensar em uma maneira em como poderia salvar se o objeto foi destruido ou nao quando o jogo é fechado
PedroC137- Iniciante
- PONTOS : 474
REPUTAÇÃO : 1
Idade : 23
Áreas de atuação : Estudante de desenvolvimento de jogos com Unity
Respeito as regras :
Re: Quero começa a desenvolver um jogo de luta porem eu queria aprender a faze
Tente usar serialização binária: https://www.schultzgames.com/t4937-tutorial-metodo-simples-de-salvar-progresso-do-jogo-em-um-arquivo-separado
JohnRambo- Moderador
- PONTOS : 5171
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: Quero começa a desenvolver um jogo de luta porem eu queria aprender a faze
consegui fazer um save para o jogo, consigo salvar qual cena o personagem ficou quando foi salvo e a posição que ele estava, mas os objetos que forem destruidos que preciso salvar nao consigo, estou tentando usar List<> para tentar salvar os gameobjects que tem na cena para entao pensar em uma maneira de deixar salvo quando eles forem destruidos, mas nem isso to conseguindoJohnRambo escreveu:Tente usar serialização binária: https://www.schultzgames.com/t4937-tutorial-metodo-simples-de-salvar-progresso-do-jogo-em-um-arquivo-separado
- Código:
using System;
using System.Collections;
using UnityEngine;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
using System.Data;
using UnityEngine.SceneManagement;
using System.Collections.Generic;
using Unity.VisualScripting;
public class Data : MonoBehaviour
{
public float playerPositionx, playerPositiony, playerPositionz; //posição do player que vai ser salva
private GameObject _player;
private GameObject[] Datas;
public List<GameObject> blocosList = new List<GameObject>();
LisBlocos blocos;
ControllerScene scene;
public string cena;
[Header("Configuração do arquivo")]
public string DiretorioDoArquivo;
public string FormatoDoArquivo;
public string NomeDoArquivo;
[Serializable]
class DadosDoJogo
{
public float _playerPositionx, _playerPositiony, _playerPositionz;
public string _valorCena;
}
private void Start()
{
scene = FindObjectOfType(typeof(ControllerScene)) as ControllerScene;
blocos = FindObjectOfType(typeof(LisBlocos)) as LisBlocos;
_player = GameObject.FindGameObjectWithTag("Player");
playerPositionx = _player.transform.position.x;
playerPositiony = _player.transform.position.y;
playerPositionz = _player.transform.position.z;
cena = scene.valor;
}
private void Awake()
{
Datas = GameObject.FindGameObjectsWithTag("Data");
if(Datas.Length >= 2)
{
Destroy(Datas[0]);
}
DontDestroyOnLoad(transform.gameObject);
blocosList.AddRange(GameObject.FindGameObjectsWithTag("Mineraveis"));
}
private void Update()
{
_player = GameObject.FindGameObjectWithTag("Player");
if (Input.GetKeyDown(KeyCode.S))
{
playerPositionx = _player.transform.position.x;
playerPositiony = _player.transform.position.y;
playerPositionz = _player.transform.position.z;
Save();
Debug.Log("Salvo");
}
DiretorioDoArquivo = Application.persistentDataPath + "/" + NomeDoArquivo + "." + FormatoDoArquivo;
if(Input.GetKeyDown(KeyCode.L))
{
Load();
_player.transform.position = new Vector2(playerPositionx, playerPositiony);
Debug.Log("Carregou");
}
}
public void Save()
{
BinaryFormatter binario = new BinaryFormatter();
FileStream arquivo = File.Create(DiretorioDoArquivo); //Aqui, criamos o arquivo
DadosDoJogo dados = new DadosDoJogo(); //"DadosDoJogo" é o nome da classe que iremos acessar, ao qual criamos anteriormente
dados._playerPositionz = playerPositionz;
dados._playerPositionx = playerPositionx;
dados._playerPositiony = playerPositiony;
dados._valorCena = SceneManager.GetActiveScene().name;
binario.Serialize(arquivo, dados);
arquivo.Close();
}
public void Load() // Void que carrega
{
if (File.Exists(DiretorioDoArquivo) == true) //Aqui verificamos se existe um arquivo para ser carregado. se existir, prosseguimos
{
BinaryFormatter binario = new BinaryFormatter();
FileStream arquivo = File.Open(DiretorioDoArquivo, FileMode.Open); //Aqui abrimos o arquivo
DadosDoJogo dados = (DadosDoJogo)binario.Deserialize(arquivo); //Aqui meio que descriptografamos o arquivo
playerPositionx = dados._playerPositionx;
playerPositiony = dados._playerPositiony;
playerPositionz = dados._playerPositionz;
cena = dados._valorCena;
SceneManager.LoadScene(cena);
arquivo.Close(); //Aqui fechamos a leitura
}
else
{
Debug.Log("Não existe jogo salvo");
}
}
public void NovoJogo()
{
if(File.Exists(DiretorioDoArquivo) == true)
{
Debug.Log("Ja existe um jogo salvo");
} else
{
SceneManager.LoadScene("Nivel1");
Save();
}
}
public void DeletarSave()
{
File.Delete(DiretorioDoArquivo);
Debug.Log("Save Deletado");
}
}
PedroC137- Iniciante
- PONTOS : 474
REPUTAÇÃO : 1
Idade : 23
Áreas de atuação : Estudante de desenvolvimento de jogos com Unity
Respeito as regras :
Tópicos semelhantes
» [Unity 2D] Quero aprender a programar jogos em 2D estilo Minicraft
» Nao quero um script novo quero aprender onde errei
» Ajuda Jogo de Luta 2D precisando de AI CPU inteligente
» quero aprender o C# script!
» queria aprender a fazer O inimigo subir uma parede (pular pro outro lado)
» Nao quero um script novo quero aprender onde errei
» Ajuda Jogo de Luta 2D precisando de AI CPU inteligente
» quero aprender o C# script!
» queria aprender a fazer O inimigo subir uma parede (pular pro outro lado)
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos