[RESOLVIDO] Como criar varias contas em um jogo como PlayerPrefs.
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Como criar varias contas em um jogo como PlayerPrefs.
Galera, alguém tem uma ideia de como eu faço para modificar esta função para ela gravar novas contas em vez de substituir a que está gravada. Se alguém pude ajudar eu agradeço.
- Código:
public void CriarConta () { //Aqui voce cria uma nova conta, ela substitui a ja existente
Nomes = InputNickRegister.text;
Senha = InputSenhaRegister.text;
PlayerPrefs.SetString ("Name", Nomes);
PlayerPrefs.SetString ("Senha", Senha);
MenuRegistrar.SetActive (false);
Última edição por dstaroski em Qua Dez 06, 2017 11:17 pm, editado 1 vez(es) (Motivo da edição : Resolvido)
oilson- Membro
- PONTOS : 2609
REPUTAÇÃO : 2
Respeito as regras :
Re: [RESOLVIDO] Como criar varias contas em um jogo como PlayerPrefs.
Salve um index, que lhe ajudará... O que seria o index? o index, é um enumerador inteiro, que é auto contabilizado conforme seu uso, ou seja, quando usa-lo, ele aumentará um valor inteiro e assim vai indo...oilson escreveu:Galera, alguém tem uma ideia de como eu faço para modificar esta função para ela gravar novas contas em vez de substituir a que está gravada. Se alguém pude ajudar eu agradeço.
- Código:
public void CriarConta () { //Aqui voce cria uma nova conta, ela substitui a ja existente
Nomes = InputNickRegister.text;
Senha = InputSenhaRegister.text;
PlayerPrefs.SetString ("Name", Nomes);
PlayerPrefs.SetString ("Senha", Senha);
MenuRegistrar.SetActive (false);
Crie uma variável, que irá registrar o total de contas:
- Código:
public void CriarConta () { //Aqui voce cria uma nova conta, ela substitui a ja existente
Int tempIndex = 0
if(PlayerPrefs.GetInt("Index"))
tempIndex = PlayerPrefs.GetInt("Index") + 1;
Nomes = InputNickRegister.text;
Senha = InputSenhaRegister.text;
PlayerPrefs.SetString ("Name" + tempIndex, Nomes);
PlayerPrefs.SetString ("Senha" + tempIndex, Senha);
MenuRegistrar.SetActive (false);
PlayerPrefs.SetInt("Index", tempIndex);
}
E para logar depois, faça um for e cheque, por ex:
- Código:
bool CheckAccount(string accName, string accPass){
Int tempIndex = PlayerPrefs.GetInt("Index");
for(int i = 0; i <= index; i++){
string tempName = PlayerPrefs.GetString ("Name" + tempIndex);
string tempPass = PlayerPrefs.GetString ("Senha" + tempIndex);
if(tempName == accName && tempPass == accPass)
return true;
}
return false;
}
Eu fiz de cabeça, veja se funciona...
Obs: esse método é apenas um start, caso funcione terá que fazer algumas implementações, por exemplo, ele não detecta contas iguais, caso tente, ele criará várias com nomes iguais e senhas distintas(ou iguais também), caso alguém queira, que ocasionará erros, mas é um bom começo. Para "arrumar" isso é bem fácil, mas primeiramente veremos se esse método funciona. Basicamente isso, abraços!
Última edição por recagonlei em Sáb Dez 02, 2017 9:10 am, editado 1 vez(es) (Motivo da edição : Uma otimizada no code.)
Re: [RESOLVIDO] Como criar varias contas em um jogo como PlayerPrefs.
Não deu certo maninho se vc puder dar uma olhada no script e me indicar onde devo mudar eu agradeço...
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class Login : MonoBehaviour {
public InputField InputNick;
public InputField InputSenha;
public static string Nomes;
public string Senha;
public GameObject MenuRegistrar;
public InputField InputNickRegister;
public InputField InputSenhaRegister;
public Text Errors;
public string Cena;
private int Index;
void Awake () {
Nomes = PlayerPrefs.GetString ("Name",Nomes);
Senha = PlayerPrefs.GetString ("Senha",Senha);
}
void Update () {
}
public void Checagem () {
if (InputNick.text == Nomes && InputSenha.text == Senha) {
SceneManager.LoadScene (Cena);
Errors.text = "Voce logou";
} else {
Errors.text = "Errou seus dados";
}
}
public void CriarConta () {
int tempIndex = 0;
if (PlayerPrefs.GetInt ("Index"))
tempIndex = PlayerPrefs.GetInt("Index") + 1;
Nomes = InputNickRegister.text;
Senha = InputSenhaRegister.text;
PlayerPrefs.SetString ("Name", + tempIndex, Nomes);
PlayerPrefs.SetString ("Senha", + tempIndex, Senha);
MenuRegistrar.SetActive (false);
PlayerPrefs.SetInt ("Index", tempIndex);
}
bool CheckAccount (string accName, string accPass){
int tempIndex = PlayerPrefs.GetInt ("Index");
for (int i = 0; i <= Index; i++) {
string tempName = PlayerPrefs.GetString ("Name" + tempIndex);
string tempPass = PlayerPrefs.GetString ("Senha" + tempIndex);
if (tempName == accName && tempPass == accPass)
return true;
}
return false;
}
public void Registrar () {
MenuRegistrar.SetActive (true);
}
}
oilson- Membro
- PONTOS : 2609
REPUTAÇÃO : 2
Respeito as regras :
Re: [RESOLVIDO] Como criar varias contas em um jogo como PlayerPrefs.
E o que no caso não deu certo? Faça um debug do tempIndex e veja se ele está sendo incrementado correto a cada vez que cria uma conta... E na "Checagem" você pode chamar o CheckAccount para logar ex:
E o awake não há necessidade de fazer aquela checagem... Veja se assim funciona
- Código:
public void Checagem () {
if (CheckAccount(InputNick.text, InputSenha.text)) {
SceneManager.LoadScene (Cena);
Errors.text = "Voce logou";
} else {
Errors.text = "Errou seus dados";
}
}
E o awake não há necessidade de fazer aquela checagem... Veja se assim funciona
Re: [RESOLVIDO] Como criar varias contas em um jogo como PlayerPrefs.
Este é o erro...recagonlei escreveu:E o que no caso não deu certo? Faça um debug do tempIndex e veja se ele está sendo incrementado correto a cada vez que cria uma conta... E na "Checagem" você pode chamar o CheckAccount para logar ex:
- Código:
public void Checagem () {
if (CheckAccount(InputNick.text, InputSenha.text)) {
SceneManager.LoadScene (Cena);
Errors.text = "Voce logou";
} else {
Errors.text = "Errou seus dados";
}
}
E o awake não há necessidade de fazer aquela checagem... Veja se assim funciona
Assets/Scripts/Login.cs(51,19): error CS0029: Cannot implicitly convert type `int' to `bool'
oilson- Membro
- PONTOS : 2609
REPUTAÇÃO : 2
Respeito as regras :
Re: [RESOLVIDO] Como criar varias contas em um jogo como PlayerPrefs.
Puts, vegetei kakakak foi mal, deixe assim que funcionará lega(hint: coloquei um callback também para checar se o username já existe):
- Código:
public InputField InputNick;
public InputField InputSenha;
public static string Nomes;
public string Senha;
public GameObject MenuRegistrar;
public InputField InputNickRegister;
public InputField InputSenhaRegister;
public Text Errors;
public string Cena;
public void Checagem () {
if (CheckAccount(InputNick.text, InputSenha.text)) {
SceneManager.LoadScene (Cena);
Errors.text = "Voce logou";
} else {
Errors.text = "Errou seus dados";
}
}
public void CriarConta () {
Nomes = InputNickRegister.text;
Senha = InputSenhaRegister.text;
if (CheckuserExist (Nomes)) {
Errors.text = "Username exist";
return;
}
int tempIndex = 1;
if (PlayerPrefs.GetInt ("Index") > 0)
tempIndex = PlayerPrefs.GetInt("Index") + 1;
PlayerPrefs.SetString ("Name " + tempIndex, Nomes);
PlayerPrefs.SetString ("Senha " + tempIndex, Senha);
MenuRegistrar.SetActive (false);
PlayerPrefs.SetInt ("Index", tempIndex);
Errors.text = "Registered, you can login!";
}
bool CheckAccount (string accName, string accPass){
int tempIndex = PlayerPrefs.GetInt ("Index");
for (int i = 0; i < tempIndex; i++) {
string tempName = PlayerPrefs.GetString ("Name " + tempIndex);
string tempPass = PlayerPrefs.GetString ("Senha " + tempIndex);
if (tempName == accName && tempPass == accPass)
return true;
}
return false;
}
bool CheckuserExist(string user){
int tempIndex = PlayerPrefs.GetInt ("Index");
for (int i = 0; i < tempIndex; i++) {
string tempName = PlayerPrefs.GetString ("Name " + tempIndex);
if (tempName == user)
return true;
}
return false;
}
public void Registrar () {
MenuRegistrar.SetActive (true);
}
Re: [RESOLVIDO] Como criar varias contas em um jogo como PlayerPrefs.
Valeu maninho vc é o cara, ficou top de linha... Quem sabe é outros 500... . Eu estava sofrendo igual um condenado aqui...
Desculpa pela folga, mas como ficaria para fazer uma ""bool Checkuser ou senha em branco"", se não quiser responder tem problema não vc já ajudou demais...
Só mais uma coisa, qual seria a melhor maneira de ajudar o fórum? Estou aprendendo muito com vcs.
Desculpa pela folga, mas como ficaria para fazer uma ""bool Checkuser ou senha em branco"", se não quiser responder tem problema não vc já ajudou demais...
Só mais uma coisa, qual seria a melhor maneira de ajudar o fórum? Estou aprendendo muito com vcs.
oilson- Membro
- PONTOS : 2609
REPUTAÇÃO : 2
Respeito as regras :
Re: [RESOLVIDO] Como criar varias contas em um jogo como PlayerPrefs.
- Código:
Nomes = InputNickRegister.text;
Senha = InputSenhaRegister.text;
string tempError = "";
if (CheckuserExistOrBlankPass (Nomes, Senha, out tempError)) {
Errors.text = tempError;
return;
}
int tempIndex = 1;
- Código:
bool CheckuserExistOrBlankPass(string user, string pass, out string errorDebug){
if (pass == "") {
errorDebug = "The password can't be blank";
return true;
}
int tempIndex = PlayerPrefs.GetInt ("Index");
for (int i = 0; i < tempIndex; i++) {
string tempName = PlayerPrefs.GetString ("Name " + tempIndex);
if (tempName == user) {
errorDebug = "Username already exist";
return true;
}
}
errorDebug = "";
return false;
}
Modifique nos locais de acordo... O nome do método eu modifiquei, para "casar" junto com a função desejada...
E para ajudar o fórum, qualquer habilidade que tenha e possa ajudar os outros membros, respondendo tópicos, criando assets ou algo do tipo é bem vinda e alguns outros detalhes veja aqui!
Re: [RESOLVIDO] Como criar varias contas em um jogo como PlayerPrefs.
recagonlei escreveu:
- Código:
Nomes = InputNickRegister.text;
Senha = InputSenhaRegister.text;
string tempError = "";
if (CheckuserExistOrBlankPass (Nomes, Senha, out tempError)) {
Errors.text = tempError;
return;
}
int tempIndex = 1;
- Código:
bool CheckuserExistOrBlankPass(string user, string pass, out string errorDebug){
if (pass == "") {
errorDebug = "The password can't be blank";
return true;
}
int tempIndex = PlayerPrefs.GetInt ("Index");
for (int i = 0; i < tempIndex; i++) {
string tempName = PlayerPrefs.GetString ("Name " + tempIndex);
if (tempName == user) {
errorDebug = "Username already exist";
return true;
}
}
errorDebug = "";
return false;
}
Modifique nos locais de acordo... O nome do método eu modifiquei, para "casar" junto com a função desejada...
E para ajudar o fórum, qualquer habilidade que tenha e possa ajudar os outros membros, respondendo tópicos, criando assets ou algo do tipo é bem vinda e alguns outros detalhes veja aqui!
Excelente, ficou top de linha.
Vou apoiar o site pelo "APOIA-SE", pois conhecimento eu tenho muito pouco...
Quanto a criar assets como funciona?
oilson- Membro
- PONTOS : 2609
REPUTAÇÃO : 2
Respeito as regras :
Re: [RESOLVIDO] Como criar varias contas em um jogo como PlayerPrefs.
Para melhor organização do fórum, para outras questões, crie um outro tópico ou pergunte aqui -> https://www.schultzgames.com/t4614p350-____topico-livre____-fale-o-que-quiser-parte-2#44563
Você diz para ti criar ou sobre os assets do fórum? Pergunte por lá, abraços!
Você diz para ti criar ou sobre os assets do fórum? Pergunte por lá, abraços!
Re: [RESOLVIDO] Como criar varias contas em um jogo como PlayerPrefs.
Maninho agora que observei ele só está lembrando os dados de uma conta. Tipo quando eu registro uma segunda conta ele esquece a outra... E assim por diante...
Se eu criar 2 contas e for logar, ele só lembra a que eu registrei por último a outra não... Vc tem alguma ideia de como eu posso resolver isso.
Se eu criar 2 contas e for logar, ele só lembra a que eu registrei por último a outra não... Vc tem alguma ideia de como eu posso resolver isso.
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class Login : MonoBehaviour {
public static string Nomes;
private string Senha;
[Header("Configuração Nick Logar")]
public InputField InputNick;
public InputField InputSenha;
public string Cena;
[Header("Configuração Nick Registrar")]
public GameObject MenuRegistrar;
public InputField InputNickRegister;
public InputField InputSenhaRegister;
[Header("Configuração Mensagem de Erros")]
public Text Errors;
public void Checagem () {
if (CheckAccount(InputNick.text, InputSenha.text)) {
SceneManager.LoadScene (Cena);
Errors.text = "Voce logou";
} else {
Errors.text = "Errou seus dados";
}
}
public void CriarConta () {
Nomes = InputNickRegister.text;
Senha = InputSenhaRegister.text;
if (CheckuserExist (Nomes)) {
Errors.text = "Este nome já foi registrado";
return;
}
int tempIndex = 1;
if (PlayerPrefs.GetInt ("Index") > 0)
tempIndex = PlayerPrefs.GetInt("Index") + 1;
PlayerPrefs.SetString ("Name " + tempIndex, Nomes);
PlayerPrefs.SetString ("Senha " + tempIndex, Senha);
MenuRegistrar.SetActive (false);
PlayerPrefs.SetInt ("Index", tempIndex);
Errors.text = "Registrado com sucesso, loge agora para jogar!";
}
bool CheckAccount (string accName, string accPass){
int tempIndex = PlayerPrefs.GetInt ("Index");
for (int i = 0; i < tempIndex; i++) {
string tempName = PlayerPrefs.GetString ("Name " + tempIndex);
string tempPass = PlayerPrefs.GetString ("Senha " + tempIndex);
if (tempName == accName && tempPass == accPass)
return true;
}
return false;
}
bool CheckuserExist(string user){
int tempIndex = PlayerPrefs.GetInt ("Index");
for (int i = 0; i < tempIndex; i++) {
string tempName = PlayerPrefs.GetString ("Name " + tempIndex);
if (tempName == user)
return true;
}
return false;
}
public void Registrar () {
MenuRegistrar.SetActive (true);
}
}
oilson- Membro
- PONTOS : 2609
REPUTAÇÃO : 2
Respeito as regras :
Re: [RESOLVIDO] Como criar varias contas em um jogo como PlayerPrefs.
Puts, verdade kakakak agora aparentemente está a funcionar legal. Apenas uma conta por username, não pode registrar sem username ou password em branco e não menos importante, dá para criar várias independentes... E seu código tá meio diferenciado do jeito que deveria estar:
Modifique nos locais de acordo, abraços!
- Código:
public void CriarConta () {
Nomes = InputNickRegister.text;
Senha = InputSenhaRegister.text;
string tempError = "";
if (CheckuserExistOrBlankPass (Nomes, Senha, out tempError)) {
Errors.text = tempError;
return;
}
- Código:
bool CheckAccount (string accName, string accPass){
int tempIndex = PlayerPrefs.GetInt ("Index");
for (int i = 1; i <= tempIndex; i++) {
string tempName = PlayerPrefs.GetString ("Name " + i);
string tempPass = PlayerPrefs.GetString ("Senha " + i);
if (tempName == accName && tempPass == accPass)
return true;
}
return false;
}
bool CheckuserExistOrBlankPass(string user, string pass, out string errorDebug){
if (pass.Length == 0 || user.Length == 0) {
errorDebug = "The password or username can't be blank";
return true;
}
int tempIndex = PlayerPrefs.GetInt ("Index");
for (int i = 1; i <= tempIndex;) {
string tempName = PlayerPrefs.GetString ("Name " + i);
if (tempName == user) {
errorDebug = "Username already exist";
return true;
}
i++;
}
errorDebug = "";
return false;
}
Modifique nos locais de acordo, abraços!
Re: [RESOLVIDO] Como criar varias contas em um jogo como PlayerPrefs.
Maninho vc caiu do céu, muito obrigado. Dei uma incrementada nele e ficou uma pérola... Vlw de coração mesmo... Vou deixar aqui o resultado final.. Espero que sirva para alguém no futuro.
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class Login : MonoBehaviour {
public static string Nomes;
private string Senha;
[Header("Configuração Nick Logar")]
public InputField InputNick;
public InputField InputSenha;
[Header("Configuração Nick Registrar")]
public GameObject MenuRegistrar;
public InputField InputNickRegister;
public InputField InputSenhaRegister;
[Header("Configuração Mensagem de Erros")]
public Text Errors;
public void Checagem () {
Nomes = InputNickRegister.text;
Senha = InputSenhaRegister.text;
if (CheckAccount(InputNick.text, InputSenha.text)) {
Errors.CrossFadeAlpha (100f, 2f, false);
Errors.color = Color.green;
Errors.text = "Login Realizado com Sucesso\nCarregando Jogo...";
StartCoroutine (CarregaScene ());
}
else
{
Errors.CrossFadeAlpha (100f, 2f, false);
Errors.color = Color.red;
Errors.text = "Usuário ou Senha inválida";
Errors.CrossFadeAlpha (0f, 5f, false);
InputNick.text = "";
InputSenha.text = "";
}
}
public void CriarConta () {
Nomes = InputNickRegister.text;
Senha = InputSenhaRegister.text;
string tempError = "";
if (CheckuserExistOrBlankPass (Nomes, Senha, out tempError)) {
Errors.text = tempError;
return;
}
int tempIndex = 1;
if (PlayerPrefs.GetInt ("Index") > 0)
tempIndex = PlayerPrefs.GetInt("Index") + 1;
PlayerPrefs.SetString ("Name " + tempIndex, Nomes);
PlayerPrefs.SetString ("Senha " + tempIndex, Senha);
MenuRegistrar.SetActive (true);
PlayerPrefs.SetInt ("Index", tempIndex);
Errors.CrossFadeAlpha (100f, 2f, false);
Errors.color = Color.green;
Errors.text = "Registrado com sucesso, agora logue para jogar!";
Errors.CrossFadeAlpha (0f, 7f, false);
}
bool CheckAccount (string accName, string accPass){
int tempIndex = PlayerPrefs.GetInt ("Index");
for (int i = 1; i <= tempIndex; i++) {
string tempName = PlayerPrefs.GetString ("Name " + i);
string tempPass = PlayerPrefs.GetString ("Senha " + i);
if (tempName == accName && tempPass == accPass)
return true;
}
return false;
}
bool CheckuserExistOrBlankPass(string user, string pass, out string errorDebug){
if (pass.Length == 0 || user.Length == 0) {
Errors.CrossFadeAlpha (100f, 2f, false);
Errors.color = Color.red;
errorDebug = "O usuário ou a senha não pode ficar em branco";
Errors.CrossFadeAlpha (0f, 5f, false);
InputNick.text = "";
InputSenha.text = "";
return true;
}
int tempIndex = PlayerPrefs.GetInt ("Index");
for (int i = 1; i <= tempIndex;) {
string tempName = PlayerPrefs.GetString ("Name " + i);
if (tempName == user) {
Errors.CrossFadeAlpha (100f, 2f, false);
Errors.color = Color.red;
errorDebug = "Este usuário já esta registrado! Tente outro...";
Errors.CrossFadeAlpha (0f, 5f, false);
InputNick.text = "";
InputSenha.text = "";
return true;
}
i++;
}
errorDebug = "";
return false;
}
public void Registrar () {
MenuRegistrar.SetActive (true);
}
IEnumerator CarregaScene(){
yield return new WaitForSeconds (3);
SceneManager.LoadScene ("preTitulo");
}
}
oilson- Membro
- PONTOS : 2609
REPUTAÇÃO : 2
Respeito as regras :
Re: [RESOLVIDO] Como criar varias contas em um jogo como PlayerPrefs.
Nós que agradecemos velho, fico feliz em poder ter ajudado! Abraços, sucesso!
Tópicos semelhantes
» [RESOLVIDO] Como criar várias ações (funções) em um único botão ???
» tem como excluir uma( ou várias ) contas do fórum?
» [RESOLVIDO] como criar uma tela com instruções antes do jogo começar?
» [RESOLVIDO] ERRO SCRIPT "Como criar um JOGO DE TERROR ( Sustos ) - UNITY 3D
» [RESOLVIDO] Galera como posso criar uma tecla para deixar o jogo mudo?
» tem como excluir uma( ou várias ) contas do fórum?
» [RESOLVIDO] como criar uma tela com instruções antes do jogo começar?
» [RESOLVIDO] ERRO SCRIPT "Como criar um JOGO DE TERROR ( Sustos ) - UNITY 3D
» [RESOLVIDO] Galera como posso criar uma tecla para deixar o jogo mudo?
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos