Salvar informação de loja
2 participantes
Página 1 de 1
Salvar informação de loja
Pessoal estou criando um jogo onde preciso guarda 6 informação de cada loja por exemplo, quero ter guardado em um arquivo numLoja,lojaAtiva,lvFuncionario,lvEstoque,lvComida,tamanholoja, todas essa informações pode ser int, qual melhor forma de armazenar essa informação sendo que cada loja tera que armazenar essas informações? (numLoja,lojaAtiva,lvFuncionario,lvEstoque,lvComida,tamanholoja) x 50 e terei que localizar pelo numLoja.
undertakerbr- Iniciante
- PONTOS : 1589
REPUTAÇÃO : 0
Respeito as regras :
Re: Salvar informação de loja
A primeira pergunta deveria ser onde salvar. Essas compras são via IAP? tem dinheiro de verdade em jogo? você precisa de segurança?
Se qualquer uma das respostas for sim, o salvamento precisa ser online, em um banco de dados caso o game seja pra PC ou na conta do Google por exemplo, se for mobile.
Se a resposta de todas for não, playerprefs ou um arquivo binário supre sua necessidade tranquilamente. Caso escolha o PlayerPrefs, você precisa passar cada parâmetro separadamente, ou criar uma string juntando todos os valores de uma loja separando por algum caractere especial, caso queira um arquivo binário, você pode serializar uma classe.
Com exceção do PlayerPrefs, isso não é o tipo de coisa simples que 10 linhas de código vai funcionar e servir certinho pro teu projeto, você vai precisar dar uma boa estudada pra implementar direito, segue algumas fontes de estudo;
Salvar online já é um pouco mais complicado, se teu jogo for mobile, tem esse guia:
Fiz um exemplo de salvamento mais simples, via PlayerPrefs, inseguro:
fiz voando, então pode ter bugs kkk
Você pode baixá-lo no link abaixo.
Projeto Exemplo Playerprefs
Tirei a loja ativa da struct loja pois faz mais sentido ter ela no script de gerencia.
Se qualquer uma das respostas for sim, o salvamento precisa ser online, em um banco de dados caso o game seja pra PC ou na conta do Google por exemplo, se for mobile.
Se a resposta de todas for não, playerprefs ou um arquivo binário supre sua necessidade tranquilamente. Caso escolha o PlayerPrefs, você precisa passar cada parâmetro separadamente, ou criar uma string juntando todos os valores de uma loja separando por algum caractere especial, caso queira um arquivo binário, você pode serializar uma classe.
Com exceção do PlayerPrefs, isso não é o tipo de coisa simples que 10 linhas de código vai funcionar e servir certinho pro teu projeto, você vai precisar dar uma boa estudada pra implementar direito, segue algumas fontes de estudo;
Salvar online já é um pouco mais complicado, se teu jogo for mobile, tem esse guia:
Fiz um exemplo de salvamento mais simples, via PlayerPrefs, inseguro:
fiz voando, então pode ter bugs kkk
Você pode baixá-lo no link abaixo.
Projeto Exemplo Playerprefs
- Código:
using UnityEngine;
[System.Serializable]
public struct Loja
{
[HideInInspector]
public string name;
public int numLoja;
public int lvFuncionario;
public int lvEstoque;
public int lvComida;
public int tamanhoLoja;
}
- Código:
using UnityEngine;
public class GerenciaLojas : MonoBehaviour
{
public int lojaAtiva;
[Space]
[Header("--------- LOJAS ---------")]
public Loja[] lojas;
private int qtdLojas;
private void OnValidate()
{
if (lojas != null)
{
for (int i = 0; i < lojas.Length; i++)
{
lojas[i].numLoja = i;
lojas[i].name = "Loja "+ i.ToString("00");
}
}
}
public void SalvarDados()
{
PlayerPrefs.SetInt("qtdLojas", lojas.Length);
PlayerPrefs.SetInt("lojaAtiva", lojaAtiva);
for (int i = 0; i < lojas.Length; i++)
{
PlayerPrefs.SetInt("loja" + i, i);
PlayerPrefs.SetInt("loja" + i + "lvfunc", lojas[i].lvFuncionario);
PlayerPrefs.SetInt("loja" + i + "lvEst", lojas[i].lvEstoque);
PlayerPrefs.SetInt("loja" + i + "lvCom", lojas[i].lvComida);
PlayerPrefs.SetInt("loja" + i + "tamLoja", lojas[i].tamanhoLoja);
}
PlayerPrefs.Save();
}
public void CarregarDados()
{
if (PlayerPrefs.HasKey("qtdLojas"))
{
qtdLojas = PlayerPrefs.GetInt("qtdLojas");
lojaAtiva = PlayerPrefs.GetInt("lojaAtiva");
lojas = new Loja[qtdLojas];
}
else
{
return;
}
for (int i = 0; i < qtdLojas; i++)
{
if (PlayerPrefs.HasKey("loja" + i))
{
lojas[i].numLoja = PlayerPrefs.GetInt("loja" + i, i);
lojas[i].lvFuncionario = PlayerPrefs.GetInt("loja" + i + "lvfunc");
lojas[i].lvEstoque = PlayerPrefs.GetInt("loja" + i + "lvEst");
lojas[i].lvComida = PlayerPrefs.GetInt("loja" + i + "lvCom");
lojas[i].tamanhoLoja = PlayerPrefs.GetInt("loja" + i + "tamLoja");
lojas[i].name = "Loja " + i.ToString("00");
}
}
}
}
Tirei a loja ativa da struct loja pois faz mais sentido ter ela no script de gerencia.
Fagner- Moderador
- PONTOS : 4443
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: Salvar informação de loja
Seguindo sua ideia eu criei código a baixo, gostaria de saber se é possível acessar a array loja1 em outra classe que esta em outro script ou seria mais seguro salvar em um arquivo criptografado e acessar o arquivo?
void criarLoja()
{
for (int l = 1; l <= 50; l++)
{
numLoja = l;
lojaativa = 0;
lvFuncionario = 0;
lvEstoque = 0;
lvComida = 0;
tamanhoFila = 0;
loja1[l] = numLoja.ToString()+","+lojaativa.ToString()+","+lvFuncionario.ToString() + "," + lvEstoque.ToString() + "," + lvComida.ToString() + "," + tamanhoFila.ToString();
}
}
public void criarLojaativa(int numLojades) //ativa loja baseado no numero da loja
{
loja1[numLojades] = numLojades.ToString()+",1,1,1,1,50";
}
void criarLoja()
{
for (int l = 1; l <= 50; l++)
{
numLoja = l;
lojaativa = 0;
lvFuncionario = 0;
lvEstoque = 0;
lvComida = 0;
tamanhoFila = 0;
loja1[l] = numLoja.ToString()+","+lojaativa.ToString()+","+lvFuncionario.ToString() + "," + lvEstoque.ToString() + "," + lvComida.ToString() + "," + tamanhoFila.ToString();
}
}
public void criarLojaativa(int numLojades) //ativa loja baseado no numero da loja
{
loja1[numLojades] = numLojades.ToString()+",1,1,1,1,50";
}
undertakerbr- Iniciante
- PONTOS : 1589
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» Loja no game, duvidas sobre voltar para a cena após usar a loja.
» DUVIDA-Informação sobre objeto com Raycast
» Como Passar ou pegar Informação De Um Inputfield
» Informação Importante sobre o Edge Collider 2D
» Como pegar a informação de uma scene, se esta ativa ou não?
» DUVIDA-Informação sobre objeto com Raycast
» Como Passar ou pegar Informação De Um Inputfield
» Informação Importante sobre o Edge Collider 2D
» Como pegar a informação de uma scene, se esta ativa ou não?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos