Como gravar variáveis em objetos Instanciado?
4 participantes
Página 1 de 1
Como gravar variáveis em objetos Instanciado?
Ola galera, tudo bem?
Estou criando um card game, Fiz um sistema que armazena os dados das cartas como ID, Nome, ATK, DEF e etc....
porem, gostaria de que quando eu instancionace o objeto carta no deck, ele recebece uma variavel ID, ATK, DEF, NOME, e IMG....
como faço pra gravar os dados nos objetos instancionados?
alguem pode dar um help?
O Config é onde esta meu arquivo de configuração do deck do player... ele esta recebendo essas cartas de um banco de dados SQL...
os numeros, 1,2,3,4 etc.. são as IDs das cartas puxadas do DB...
Dai gostaria de gravar alguns dados nos objetos instanciados... DeckCard(Clone)
como: ID, NOME, ATK, DEF, e IMG...
como posso gravar esses dados assim q eu instancio o objeto?
Esse é o código q to usando pra criar o baralho meu.. dai preciso colocar dados das cartas junto ao objeto instanciado..
Espero que entendam oq to querendo e que possam me ajudar, pq já tentei de tudo!
Estou criando um card game, Fiz um sistema que armazena os dados das cartas como ID, Nome, ATK, DEF e etc....
porem, gostaria de que quando eu instancionace o objeto carta no deck, ele recebece uma variavel ID, ATK, DEF, NOME, e IMG....
como faço pra gravar os dados nos objetos instancionados?
alguem pode dar um help?
O Config é onde esta meu arquivo de configuração do deck do player... ele esta recebendo essas cartas de um banco de dados SQL...
os numeros, 1,2,3,4 etc.. são as IDs das cartas puxadas do DB...
Dai gostaria de gravar alguns dados nos objetos instanciados... DeckCard(Clone)
como: ID, NOME, ATK, DEF, e IMG...
como posso gravar esses dados assim q eu instancio o objeto?
Esse é o código q to usando pra criar o baralho meu.. dai preciso colocar dados das cartas junto ao objeto instanciado..
- Código:
//Monta Deck do Player
void montaDeck()
{
for (int i = 0; i < deckMain.Count; i++)
{
GameObject tempobjectdec = Instantiate(DeckZone, new Vector3(lastPositionObject.x - 0.002f, lastPositionObject.y + 0.006f, lastPositionObject.z - 0.003f), transform.rotation) as GameObject;
lastPositionObject = tempobjectdec.transform.position;
tempobjectdec.name = "DeckCard("+ deckMain[i] + ")";
//ID
//NAME
//IMG
//ATK
//DEF
}
}
Espero que entendam oq to querendo e que possam me ajudar, pq já tentei de tudo!
dbzronaldo- Membro
- PONTOS : 3049
REPUTAÇÃO : 1
Respeito as regras :
Re: Como gravar variáveis em objetos Instanciado?
Não entendi bem... você esta instanciando as cartas do seu baralho é isso ? você ta querendo armazenar os valores delas é isso ?
kalielson- ProgramadorMaster
- PONTOS : 3576
REPUTAÇÃO : 120
Idade : 40
Áreas de atuação : Mestrando em Computação
Respeito as regras :
Re: Como gravar variáveis em objetos Instanciado?
sim... eu instancionei elas pra criar o monte de cartas(deck) pra eu ir puxando conforme os turnos...
Resumindo:
Puxei os dados do banco de dados SQL e instancionei elas...
mas nesse momento q instancio queria tmb gravar junto aos objetos clones alguns dados que tem no banco de dados!
Resumindo:
Puxei os dados do banco de dados SQL e instancionei elas...
mas nesse momento q instancio queria tmb gravar junto aos objetos clones alguns dados que tem no banco de dados!
dbzronaldo- Membro
- PONTOS : 3049
REPUTAÇÃO : 1
Respeito as regras :
Re: Como gravar variáveis em objetos Instanciado?
Suas carta tem algum script pra receber essas variaveis um CardBase ou algo assim?
Se for so passar os valores pra ela ou mesmo usar um construtor.
E para o deck creio que seria bom fazer uma lista de CardBase ou algo assim pq listas são mais faceis de manipular.
Se for so passar os valores pra ela ou mesmo usar um construtor.
E para o deck creio que seria bom fazer uma lista de CardBase ou algo assim pq listas são mais faceis de manipular.
Re: Como gravar variáveis em objetos Instanciado?
Sim... o ConfigDeck.CS puxa os dados do SQL Lite do Player, e grava eles em um List chamado deckMain.
Ainda estou meio perdido nesse unity,
- Você acha q não é necessário gravar as informações das cartas nos objetos instancionados?
- A melhor forma de criar um jogo desse tipo é criar varias Lists? EX: uma pras cartas da mao, outra pro deck, outra pro cemitério e tals?
tem mais alguma dica?
- Código:
string sqlQueryOne = "SELECT deck_id, card_id, id " + "FROM deck_cards WHERE deck_id =" + Config.deckId;
dbcmd.CommandText = sqlQueryOne;
IDataReader readerone = dbcmd.ExecuteReader();
while (readerone.Read())
{
int idddcarddd = readerone.GetInt32(1);
deckMain.Add(idddcarddd); //Grava ID DA CARTA <INT>
}
Ainda estou meio perdido nesse unity,
- Você acha q não é necessário gravar as informações das cartas nos objetos instancionados?
- A melhor forma de criar um jogo desse tipo é criar varias Lists? EX: uma pras cartas da mao, outra pro deck, outra pro cemitério e tals?
tem mais alguma dica?
dbzronaldo- Membro
- PONTOS : 3049
REPUTAÇÃO : 1
Respeito as regras :
Re: Como gravar variáveis em objetos Instanciado?
Bom amigo card game é meio xato de fazer(ja tentei varias vezes) as partes mais dificeis creio que seja os efeitos da carta se os mesmos forem do tipo parecidos com Yugioh, Magic
O resto é mais deboa, mas ai depende da complexidade do seu card game.
Vou mostrar uma parte do meu script CardBase que é um script que uso para derivar todas as cartas, ou seja é o script basico de toda carta.
O resto é mais deboa, mas ai depende da complexidade do seu card game.
Vou mostrar uma parte do meu script CardBase que é um script que uso para derivar todas as cartas, ou seja é o script basico de toda carta.
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.EventSystems;
#region Enuns
public enum CardType{
ELEMENT,
SPELL,
TRAP
}
public enum SupportSubtype{
NONE,
NORMAL,
CONTINUOS
}
public enum CardInPosition{
INDECK,
INGRAVE,
INHAND,
INFIELD
}
#endregion
public abstract class CardBase : MonoBehaviour,IPointerDownHandler,IPointerEnterHandler,IPointerExitHandler {
public string cardName;
public string description;
public int id;
public CardType type;
public CardInPosition inPosition{ get; private set;}
public Sprite faceUpSprite;
public static Sprite faceDownSprite;
public CardEffect[] effects;
public CharacterBase owner;
public CharacterBase enemy;
public bool canBeSelectedToTarget = false;
}
Re: Como gravar variáveis em objetos Instanciado?
hahahha, percebi que é meio chato... achei que seria simples tmb...
é bem semelhante ao yugioh mesmo... entendi, vc criou um arquivo para ser a base...
esse CardBase não precisa ser inserido nas cartas né? apenas em um gameobject vazio.
- Como grava as informações nele? não consegui compreender essa parte..
conhece alguma videoaula aqui, ou no youtube que trate de explicar alguma coisa de cardgame?
pq sem referencia fica dificil, ainda mais q estou meio que comecando agora no unity...
no php foi facil para mim fazer na epoca, mas nao teve o desempenho q eu espera... por ser muitas cartas pessoas com internet lerda sofria. kkkk
é bem semelhante ao yugioh mesmo... entendi, vc criou um arquivo para ser a base...
esse CardBase não precisa ser inserido nas cartas né? apenas em um gameobject vazio.
- Como grava as informações nele? não consegui compreender essa parte..
conhece alguma videoaula aqui, ou no youtube que trate de explicar alguma coisa de cardgame?
pq sem referencia fica dificil, ainda mais q estou meio que comecando agora no unity...
no php foi facil para mim fazer na epoca, mas nao teve o desempenho q eu espera... por ser muitas cartas pessoas com internet lerda sofria. kkkk
dbzronaldo- Membro
- PONTOS : 3049
REPUTAÇÃO : 1
Respeito as regras :
Re: Como gravar variáveis em objetos Instanciado?
Então como disse esse script CardBase é a base de todas as cartas, meu card game tem 3 tipos de cartas iguai Yugioh, so que no caso as que uso são ELEMENT,SPELL e TRAP, os Elements são como os monstros possuem atk/def, podem ser invocados ... Por isso tenho um script CardElement, que deriva de CardBase, ou seja toda carta do tipo Element recebe o script CardElement que alem das coisas basicas de toda carta ele apresenta atk/def ...
Então cara se voce começou a pouco tempo com Unity e tem um conhecimento pequeno de programação, não recomendaria voce ja fazer um Card game estilo Yugioh de primeira, pq 90% do projeto é so codigo e talz, recomendaria voce fazer projetos mais simples pra aprendizado.
E sobre tutorial de Card game não encontrei quase nada no youtube, creio que por ser algo um tanto complexo e tambem cada Card game é "unico" o que deixa um pouco dificil fazer algo muito generico.
Boa sorte!
Então cara se voce começou a pouco tempo com Unity e tem um conhecimento pequeno de programação, não recomendaria voce ja fazer um Card game estilo Yugioh de primeira, pq 90% do projeto é so codigo e talz, recomendaria voce fazer projetos mais simples pra aprendizado.
E sobre tutorial de Card game não encontrei quase nada no youtube, creio que por ser algo um tanto complexo e tambem cada Card game é "unico" o que deixa um pouco dificil fazer algo muito generico.
Boa sorte!
Re: Como gravar variáveis em objetos Instanciado?
Ah sim... entendi... realmente, tem pouca coisa! quando comecei achei q seria facil, kk
Só mais 2 duvidas:
1 - Vc insere o elemento CardElemento em todas as cartas de mostro instancionada? ou não?
2 - Você usa 1 table para o deck, 1 table para o cemitério e 1 table para o campo? ou não é dessa forma q fez a estrutura?
vou só dar mais uma estudadinha no assunto, se eu não conseguir tentarei outro projeto.. mas obrigado mesmo pela força!
Obrigado mesmo amigao!
Só mais 2 duvidas:
1 - Vc insere o elemento CardElemento em todas as cartas de mostro instancionada? ou não?
2 - Você usa 1 table para o deck, 1 table para o cemitério e 1 table para o campo? ou não é dessa forma q fez a estrutura?
vou só dar mais uma estudadinha no assunto, se eu não conseguir tentarei outro projeto.. mas obrigado mesmo pela força!
Obrigado mesmo amigao!
dbzronaldo- Membro
- PONTOS : 3049
REPUTAÇÃO : 1
Respeito as regras :
Re: Como gravar variáveis em objetos Instanciado?
1) Sim todos os "monstros/elementos" tem o script CardElement.
2) Uso uma lista para o deck, uma lista para o cemitério, ja para o campo é algo diferente, crio uma lista para cartas na mão, outra para Spell/Trap no campo e outra lista para "monstros/elementos" no campo.
Criei um Script CharacterBase, que sera usado tanto pra Jogador quanto Inteligencia Artificial, esse script apresenta coisas comuns tanto para o Jogador quanto para a IA, coisas como deck(lista de CardBase), lista de cartas na mão, pontos de vida, etc ....
Essa foi a forma que fiz todavia nada te impede de fazer de outra maneira.
2) Uso uma lista para o deck, uma lista para o cemitério, ja para o campo é algo diferente, crio uma lista para cartas na mão, outra para Spell/Trap no campo e outra lista para "monstros/elementos" no campo.
Criei um Script CharacterBase, que sera usado tanto pra Jogador quanto Inteligencia Artificial, esse script apresenta coisas comuns tanto para o Jogador quanto para a IA, coisas como deck(lista de CardBase), lista de cartas na mão, pontos de vida, etc ....
Essa foi a forma que fiz todavia nada te impede de fazer de outra maneira.
Re: Como gravar variáveis em objetos Instanciado?
Ola Manawydan, obrigado pela ajuda.. estive off por um tempo, agora voltei a estudar isso. hahahha... gostaria de optar em algo mas simples, mas agora estou focado nisso. kk
criei um arquivo CardBase, semelhante ao que você postou.
inseri ele nos arquivos instanciados do deck, e consegui gravar o ID da carta no objeto instanciado, porem, não consigo puxar o nome o da carta.. apenas o id.
Esse é a função pra pegar os dados da carta...
No código abaixo eu monto o deck, instancio as cartas e gravo a id,
porem, quando eu chamo a função para retornar o titulo da carta e gravar no objeto instanciado...
NÃO CONSIGO O RETORNO DA FUNCAO "getCard" ACREDITO Q É POR CAUSA QUE ESTOU USANDO O RETURN DENTRO DE UM WHILE.
TEM ALGUMA COISA PRA EU CONCERTAR ISSO?
GOSTARIA DE GRAVAR O NOME DA CARTA QUE ESTA NO DB, NO COMPONENTE DO OBJETO INSTANCIADO..
PORE,.. NÃO CONSIGO OBTER O RETORNO DO BANCO DE DADOS, ACREDITO QUE SEJA POR CAUSA DO RETURN Q ESTA DENTRO DO WHILE...
criei um arquivo CardBase, semelhante ao que você postou.
inseri ele nos arquivos instanciados do deck, e consegui gravar o ID da carta no objeto instanciado, porem, não consigo puxar o nome o da carta.. apenas o id.
Esse é a função pra pegar os dados da carta...
- Código:
//Pega dados da carta
string getCard(int card) {
string connn = "URI=file:" + Application.dataPath + "/database.s3db"; //Path to database.
IDbConnection dbconnn;
dbconnn = (IDbConnection)new SqliteConnection(connn);
dbconnn.Open(); //Open connection to the database.
IDbCommand dbcmd = dbconnn.CreateCommand();
string sqlQueryy = "SELECT id, name, desc " + "FROM cards WHERE id =" + card;
dbcmd.CommandText = sqlQueryy;
IDataReader readerone = dbcmd.ExecuteReader();
while (readerone.Read())
{
string namecard = readerone.GetString(1);
return namecard; //retorna nome da carta
}
readerone.Close();
readerone = null;
dbcmd.Dispose();
dbcmd = null;
dbconnn.Close();
dbconnn = null;
}
No código abaixo eu monto o deck, instancio as cartas e gravo a id,
porem, quando eu chamo a função para retornar o titulo da carta e gravar no objeto instanciado...
NÃO CONSIGO O RETORNO DA FUNCAO "getCard" ACREDITO Q É POR CAUSA QUE ESTOU USANDO O RETURN DENTRO DE UM WHILE.
- Código:
//Monta Deck do Player
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void montaDeck()
{
for (int i = 0; i < deckMain.Count; i++)
{
GameObject tempobjectdec = Instantiate(DeckZone, new Vector3(lastPositionObject.x - 0.002f, lastPositionObject.y + 0.006f, lastPositionObject.z - 0.003f), transform.rotation) as GameObject;
lastPositionObject = tempobjectdec.transform.position;
tempobjectdec.GetComponent<CardBase> ().id = deckMain[i]; //PERFEITO.. GRAVO O ID DA CARTA
//TENTANDO PEGAR O NOME DA CARTA POREM NÃO FUNCIONA O RETURN, ACREDITO Q PORQUE ELE ESTA DENTRO DE UM WHILE.
tempobjectdec.GetComponent<CardBase> ().cardName = getCard(deckMain[i]);
}
//print ("Deck Carregado");
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TEM ALGUMA COISA PRA EU CONCERTAR ISSO?
GOSTARIA DE GRAVAR O NOME DA CARTA QUE ESTA NO DB, NO COMPONENTE DO OBJETO INSTANCIADO..
PORE,.. NÃO CONSIGO OBTER O RETORNO DO BANCO DE DADOS, ACREDITO QUE SEJA POR CAUSA DO RETURN Q ESTA DENTRO DO WHILE...
dbzronaldo- Membro
- PONTOS : 3049
REPUTAÇÃO : 1
Respeito as regras :
Tópicos semelhantes
» Como ler e gravar arquivos .txt em js?
» Tem como gravar video na Unity?
» Como gravar o nome de um personagem inserido pelo usuário no unity
» Como dar o mesmo valor a varias variaveis ?
» Como funciona as variaveis bool?
» Tem como gravar video na Unity?
» Como gravar o nome de um personagem inserido pelo usuário no unity
» Como dar o mesmo valor a varias variaveis ?
» Como funciona as variaveis bool?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos