[TUTORIAL] Como salvar dados em arquivos de texto .txt, .ini ou . qualquer coisa.
+3
luKkaSs
Weslley
RenanMSV
7 participantes
Página 1 de 1
[TUTORIAL] Como salvar dados em arquivos de texto .txt, .ini ou . qualquer coisa.
Olá, a pouco tempo fiz um tutorial sobre como salvar dados em um banco de dados. Este método é o mais recomendado porém salvar dados em arquivos de texto talvez seja o mais recomendado para configurações do seu jogo. Assim, um usuario pode compartilhar o arquivo com outros usuarios.
Elaborei um script simples ( e quando eu digo simples é simples mesmo ).
- Código:
using UnityEngine;
using System.Collections;
using System.IO;
// Padrão de nossos arquivos !
// Tela Cheia : Linha 1.
// Graficos : Linha 2.
// Resolução X : Linha 3.
// Resolucao Y : Linha 4.
public class INI : MonoBehaviour {
public string[] CFG; // Declaramos nossa variavel que irá conter as configurações do usuario.
private string linha; // Aqui declaramos uma variavel que irá receber o valor de cada linha do arquivo
private StreamReader sr; // Aqui declaramos um leitor de arquivos para ser usado em todas funções
private StreamWriter sw; // Aqui declaramos um escritor de arquivos para ser usado em todas funções
void Reset(){
CFG = new string[4]; // Declarando o tamanho da Array, aqui deve ser colocado o tamanho de configurações que seu arquivo deve ter. No caso deste exemplo é 4.
}
void Start () {
if (!File.Exists(Application.dataPath + "/CFG.ini")) CriarArquivoDeCFG(); // Se o arquivo de configuração não existir você CHAMA A FUNÇÃO que irá criar ele e ja escrever valores padroes.
LerArquivoDeCFG (); // Iremos ler e salvar as configuracoes do arquivo
MostrarValoresDeCFG (); // Iremos mostrar em um log essas configuracoes
UtilizarValoresDeCFG (); // Iremos usar algumas destas configuracoes
//Debug.Log("Pronto!");
}
public void CriarArquivoDeCFG(){
//File.Create (Application.dataPath + "/CFG.ini");
StreamWriter sw = new StreamWriter (Application.dataPath + "/CFG.ini"); // Iremos declarar qual arquivo queremos criar (escrever)
sw.WriteLine ("true"); // Linha 1. Aqui é bem simples, apenas chamamos a funcao WriteLine. Ela irá escrever linhas embaixo de linhas. Então o arquivo será escrito na ordem que voce quiser.
sw.WriteLine ("1"); // Linha 2. Valores padrão!
sw.WriteLine ("1024"); // Linha 3
sw.WriteLine ("768"); // Linha 4
sw.Close (); // Fechamos o arquivo (o salvando). Ja poderemos encontrar o arquivo na pasta do jogo
}
public void LerArquivoDeCFG(){
StreamReader sr = new StreamReader(Application.dataPath + "/CFG.ini"); // Declaramos qual arquivo queremos ler.
int t = 0; // Declaramos um index para ser usado no while.
while ((linha = sr.ReadLine()) != null){ // Enquanto linha for diferente de null ou seja a linha existe iremos
CFG[t] = linha; // Setamos os valores em nossa array.
t++; // Aumentamos o indice em 1.
}
sr.Close (); // Fechamos o arquivo.
}
public void MostrarValoresDeCFG(){
Debug.Log ("Tela Cheia: " + CFG[0] + ". Graficos: " + CFG[1] + ". Resolução: " + CFG[2] + "x" + CFG[3] + ".");
}
public void UtilizarValoresDeCFG(){
bool tlcheia = (CFG [0] == "true"); // Verificamos se a variavel de tela cheia está true no arquivo
Screen.SetResolution (int.Parse (CFG [2]), int.Parse (CFG [3]), tlcheia); // Setamos a resolucao e se tem tela cheia ou não.
}
}
Última edição por RenanMSV em Ter maio 10, 2016 7:01 pm, editado 1 vez(es)
RenanMSV- Instrutor
- PONTOS : 4434
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [TUTORIAL] Como salvar dados em arquivos de texto .txt, .ini ou . qualquer coisa.
RenanMSV escreveu:
Olá, a pouco tempo fiz um tutorial sobre como salvar dados em um banco de dados. Este método é o mais recomendado porém salvar dados em arquivos de texto talvez seja o mais recomendado para configurações do seu jogo. Assim, um usuario pode compartilhar o arquivo com outros usuarios.
Elaborei um script simples ( e quando eu digo simples é simples mesmo ).
- Código:
using UnityEngine;
using System.Collections;
using System.IO;
// Padrão de nossos arquivos !
// Tela Cheia : Linha 1.
// Graficos : Linha 2.
// Resolução X : Linha 3.
// Resolucao Y : Linha 4.
public class INI : MonoBehaviour {
public string[] CFG; // Declaramos nossa variavel que irá conter as configurações do usuario.
private string linha; // Aqui declaramos uma variavel que irá receber o valor de cada linha do arquivo
private StreamReader sr; // Aqui declaramos um leitor de arquivos para ser usado em todas funções
private StreamWriter sw; // Aqui declaramos um escritor de arquivos para ser usado em todas funções
void Reset(){
CFG = new string[4]; // Declarando o tamanho da Array, aqui deve ser colocado o tamanho de configurações que seu arquivo deve ter. No caso deste exemplo é 4.
}
void Start () {
if (!File.Exists(Application.dataPath + "/CFG.ini")) CriarArquivoDeCFG(); // Se o arquivo de configuração não existir você CHAMA A FUNÇÃO que irá criar ele e ja escrever valores padroes.
LerArquivoDeCFG (); // Iremos ler e salvar as configuracoes do arquivo
MostrarValoresDeCFG (); // Iremos mostrar em um log essas configuracoes
UtilizarValoresDeCFG (); // Iremos usar algumas destas configuracoes
//Debug.Log("Pronto!");
}
public void CriarArquivoDeCFG(){
//File.Create (Application.dataPath + "/CFG.ini");
StreamWriter sw = new StreamWriter (Application.dataPath + "/CFG.ini"); // Iremos declarar qual arquivo queremos criar (escrever)
sw.WriteLine ("true"); // Linha 1. Aqui é bem simples, apenas chamamos a funcao WriteLine. Ela irá escrever linhas embaixo de linhas. Então o arquivo será escrito na ordem que voce quiser.
sw.WriteLine ("1"); // Linha 2. Valores padrão!
sw.WriteLine ("1024"); // Linha 3
sw.WriteLine ("768"); // Linha 4
sw.Close (); // Fechamos o arquivo (o salvando). Ja poderemos encontrar o arquivo na pasta do jogo
}
public void LerArquivoDeCFG(){
//string Readfile = new string[File.ReadAllLines(Application.dataPath + "/CFG.ini").Length];
StreamReader sr = new StreamReader(Application.dataPath + "/CFG.ini"); // Declaramos qual arquivo queremos ler.
int t = 0; // Declaramos um index para ser usado no while.
while ((linha = sr.ReadLine()) != null){ // Enquanto linha for diferente de null ou seja a linha existe iremos
CFG[t] = linha; // Setamos os valores em nossa array.
t++; // Aumentamos o indice em 1.
}
sr.Close (); // Fechamos o arquivo.
}
public void MostrarValoresDeCFG(){
Debug.Log ("Tela Cheia: " + CFG[0] + ". Graficos: " + CFG[1] + ". Resolução: " + CFG[2] + "x" + CFG[3] + ".");
}
public void UtilizarValoresDeCFG(){
bool tlcheia = (CFG [0] == "true"); // Verificamos se a variavel de tela cheia está true no arquivo
Screen.SetResolution (int.Parse (CFG [2]), int.Parse (CFG [3]), tlcheia); // Setamos a resolucao e se tem tela cheia ou não.
}
}
Muito bom
Weslley- Moderador
- PONTOS : 5677
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: [TUTORIAL] Como salvar dados em arquivos de texto .txt, .ini ou . qualquer coisa.
Muito bom msm esse script!
mais ai vei a duvida, como ler algo assim?
mais ai vei a duvida, como ler algo assim?
- Código:
id, valor
0, 15
1, 54
luKkaSs- MembroAvançado
- PONTOS : 3303
REPUTAÇÃO : 19
Idade : 28
Respeito as regras :
Re: [TUTORIAL] Como salvar dados em arquivos de texto .txt, .ini ou . qualquer coisa.
Vamos considerar que escrevemos este arquivo aqui:
Para fazer a leitura correta basta:
Ao recuperar a linha utilizar o método Split e o Trim. Assim:
Perceba que com o método Split separamos a string da linha de nosso arquivo pelo char ":", ou seja em cada linha de seu arquivo value[0] vai guardar o ID e value[1] vai guardar o valor!.
Perceba que usamos o método Trim. Ele vai tirar os espaços desnecessários da string. É necessário pois nosso arquivo foi salvo usando espaços entre ":" para ficar melhor pra ler e entender o arquivo.
Resultado exemplo:
Agora voce só precisa verificar o ID e guardar o valor em uma variavel compativel com o id.
PS: Eu usei o ID como string porque pra mim é mais amigavel. Mas voce pode usar numeros tambem, use o Parse para transformar a string em inteiro.
- Código:
fullscreen : true
graphicslevel : 1
width : 1024
height : 768
Para fazer a leitura correta basta:
Ao recuperar a linha utilizar o método Split e o Trim. Assim:
- Código:
string[] value = linha.Split(':');
value [0] = value [0].Trim ();
value [1] = value [1].Trim ();
print(value[0] + value[1]);
Perceba que com o método Split separamos a string da linha de nosso arquivo pelo char ":", ou seja em cada linha de seu arquivo value[0] vai guardar o ID e value[1] vai guardar o valor!.
Perceba que usamos o método Trim. Ele vai tirar os espaços desnecessários da string. É necessário pois nosso arquivo foi salvo usando espaços entre ":" para ficar melhor pra ler e entender o arquivo.
Resultado exemplo:
- Código:
value[0] = "fullscreen"; //ID
value[1] = "true"; //valor
Agora voce só precisa verificar o ID e guardar o valor em uma variavel compativel com o id.
PS: Eu usei o ID como string porque pra mim é mais amigavel. Mas voce pode usar numeros tambem, use o Parse para transformar a string em inteiro.
RenanMSV- Instrutor
- PONTOS : 4434
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [TUTORIAL] Como salvar dados em arquivos de texto .txt, .ini ou . qualquer coisa.
E se eu quisesse apenas salvar uma int dinheiro e usa-la sempre que a pessoa entrasse no jogo?
Re: [TUTORIAL] Como salvar dados em arquivos de texto .txt, .ini ou . qualquer coisa.
Ai é melhor usar PlayerPrefs
RenanMSV- Instrutor
- PONTOS : 4434
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [TUTORIAL] Como salvar dados em arquivos de texto .txt, .ini ou . qualquer coisa.
ei sei só usei "dinheiro" como exemplo são muitas variáveis para salvar no playerPrefs isso iria travar o jogo. nn tem como salvar em um arquivo de um jeito seguro e criptografado?
Re: [TUTORIAL] Como salvar dados em arquivos de texto .txt, .ini ou . qualquer coisa.
Não intendi por que mais ta dando um erro aqui
Re: [TUTORIAL] Como salvar dados em arquivos de texto .txt, .ini ou . qualquer coisa.
algum index está vazio, confira se preencheu corretamente as informações no inspector aonde está o script e seus respectivos campos.Zack2 escreveu:Não intendi por que mais ta dando um erro aqui
Abraço!
Re: [TUTORIAL] Como salvar dados em arquivos de texto .txt, .ini ou . qualquer coisa.
usuário1: joão
usuário2: pedro
usuário4: paulo
Text-to-speech function is limited to 200 characters
usuário2: pedro
usuário4: paulo
G
M
T
M
T
Detect language Afrikaans Albanian Amharic Arabic Armenian Azerbaijani Basque Belarusian Bengali Bosnian Bulgarian Catalan Cebuano Chichewa Chinese (Simplified) Chinese (Traditional) Corsican Croatian Czech Danish Dutch English Esperanto Estonian Filipino Finnish French Frisian Galician Georgian German Greek Gujarati Haitian Creole Hausa Hawaiian Hebrew Hindi Hmong Hungarian Icelandic Igbo Indonesian Irish Italian Japanese Javanese Kannada Kazakh Khmer Korean Kurdish Kyrgyz Lao Latin Latvian Lithuanian Luxembourgish Macedonian Malagasy Malay Malayalam Maltese Maori Marathi Mongolian Myanmar (Burmese) Nepali Norwegian Pashto Persian Polish Portuguese Punjabi Romanian Russian Samoan Scots Gaelic Serbian Sesotho Shona Sindhi Sinhala Slovak Slovenian Somali Spanish Sundanese Swahili Swedish Tajik Tamil Telugu Thai Turkish Ukrainian Urdu Uzbek Vietnamese Welsh Xhosa Yiddish Yoruba Zulu | Afrikaans Albanian Amharic Arabic Armenian Azerbaijani Basque Belarusian Bengali Bosnian Bulgarian Catalan Cebuano Chichewa Chinese (Simplified) Chinese (Traditional) Corsican Croatian Czech Danish Dutch English Esperanto Estonian Filipino Finnish French Frisian Galician Georgian German Greek Gujarati Haitian Creole Hausa Hawaiian Hebrew Hindi Hmong Hungarian Icelandic Igbo Indonesian Irish Italian Japanese Javanese Kannada Kazakh Khmer Korean Kurdish Kyrgyz Lao Latin Latvian Lithuanian Luxembourgish Macedonian Malagasy Malay Malayalam Maltese Maori Marathi Mongolian Myanmar (Burmese) Nepali Norwegian Pashto Persian Polish Portuguese Punjabi Romanian Russian Samoan Scots Gaelic Serbian Sesotho Shona Sindhi Sinhala Slovak Slovenian Somali Spanish Sundanese Swahili Swedish Tajik Tamil Telugu Thai Turkish Ukrainian Urdu Uzbek Vietnamese Welsh Xhosa Yiddish Yoruba Zulu |
Text-to-speech function is limited to 200 characters
[url=moz-extension://a961daf5-f7b8-4950-a52f-e4b5bfd4b896/content/html/options/options.html?bbl]Options[/url] : [url=moz-extension://a961daf5-f7b8-4950-a52f-e4b5bfd4b896/content/html/options/options.html?hist]History[/url] : [url=moz-extension://a961daf5-f7b8-4950-a52f-e4b5bfd4b896/content/html/options/options.html?feed]Feedback[/url] : Donate | Close |
efsbio- Iniciante
- PONTOS : 2241
REPUTAÇÃO : 0
Tópicos semelhantes
» [TUTORIAL] Salvar dados com playerprefs facilmente.
» Como faz para salvar as escalas dos arquivos no TilePallets?
» Tem como eu Salvar os Dados de Um Terreno?
» [Vote] - Devo fazer um tutorial ensinando a salvar dados do client num servidor online?
» Como salvar e carregar pontuação de um banco de dados
» Como faz para salvar as escalas dos arquivos no TilePallets?
» Tem como eu Salvar os Dados de Um Terreno?
» [Vote] - Devo fazer um tutorial ensinando a salvar dados do client num servidor online?
» Como salvar e carregar pontuação de um banco de dados
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos