Como posso comparar enum de uma class no meu script e buscar todos objetos que tem esse enum.
2 participantes
Página 1 de 1
Como posso comparar enum de uma class no meu script e buscar todos objetos que tem esse enum.
Fiz duas Class como o marcos falou que faria o inventario dele em um topico sendo que no meu caso quero buscar todos que tem esse enum e mandar aparecer na tela com a OnGUI.
//Nao sei com buscar quem tem o enum arma para poder mandar minha void MostrarInventario e a void MostrarItemDaTela fazerem
//os objetos do inventario e do mercado mostra na tela
//Nao sei com buscar quem tem o enum arma para poder mandar minha void MostrarInventario e a void MostrarItemDaTela fazerem
//os objetos do inventario e do mercado mostra na tela
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
[System.Serializable]
public class Item {
public string itemNome;
public int itemId;
public ItemTipo itemTipo;
public GameObject itemObjeto;
public Texture2D itemTexture;
public enum ItemTipo{
Armas,
Pe,
Perna,
Peitoral,
Mao,
Pulso,
Cordao,
Anel
}
}
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
[System.Serializable]
public class ItemDataBase : Item {
public string precot;
public static double precod;
public int itemDesc;
public ItemDataBase(string nome, int id, string valor,int desconto, double valorI, ItemTipo tipo, GameObject obj, Texture2D textura)
{
itemNome = nome;
itemId = id;
itemTexture = textura;
itemObjeto = obj;
precot = valor;//
precod = valorI;//
itemTipo = tipo;
itemDesc = desconto;//
}
}
- Código:
using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
public class objtgui : MonoBehaviour {
public Item[] inventario2 = new Item[0];
ArrayList MinhaLista = new ArrayList();
public ItemDataBase[] shop = new ItemDataBase[4];
public Item.ItemTipo tipo;
public float reparo;
public bool repare;
public bool vender;
public bool aparecer;
int id,i,j;
public Vector2 scrollPosition;
// Use this for initialization
void Start() {
MinhaLista.Add ("1");
MinhaLista.Add ("3");
//j = i+1;
}
public void NovoItem(int id){
double di = 10;
if (ItemDataBase.precod <= di){
MinhaLista.Add(id); //Add um novo item na lista
}
}
public void AlterarItem(int ID,string ID2){
MinhaLista[ID] = ID2; //Altera um item usando o numero do item da lista
}
public void RemoverItem(int ID){
double di = 10;
double ve = 20.0 / 100.0;
double final;
if (vender){
final = ItemDataBase.precod*ve;
di += final;
MinhaLista.RemoveAt(ID); //Remover item usando o número do item da lista
//Array.add(inventario2, item);
http://inventario2.Remove(item);
}
}
void MostrarItemDaTela(ItemDataBase item){
GUILayout.BeginArea(new Rect(0,0,170,90),"","box");
GUILayout.BeginArea(new Rect(0,0,100,80));
GUILayout.Box(item.itemTexture,GUILayout.Height(80),GUILayout.Width(80));
GUILayout.EndArea();
GUILayout.BeginArea(new Rect(85,0,80,80));
GUILayout.BeginVertical();
GUILayout.Box(item.itemNome);
GUILayout.Box(item.precot);
if (GUILayout.Button("Comprar")){
NovoItem(item.itemId);
}
GUILayout.EndVertical();
GUILayout.EndArea();
GUILayout.EndArea();
}
void ComprarItem(Item item){
double di = 10;
if (ItemDataBase.precod <= di)
{
MinhaLista.Add(id);
http://inventario2.add(item[item.itemId]);
// inventario2.Add(item);
}
}
void VenderItem(Item item){
double di = 10;
double ve = 20.0 / 100.0;
double final;
if (vender){
final = ItemDataBase.precod*ve;
di += final;
//Array.add(inventario2, item);
http://inventario2.Remove(item);
}
}
//
void MostrarInventario(Item item){
//scrollPosition = GUILayout.BeginScrollView (scrollPosition, GUILayout.Width (100), GUILayout.Height (100));
Rect espaco = new Rect ((Screen.width - 230) - Screen.width/2,(Screen.height/4 - Screen.height/5 + 30),550 ,Screen.height);
GUILayout.BeginArea(espaco);
scrollPosition = GUILayout.BeginScrollView (scrollPosition, GUILayout.Width (200), GUILayout.Height (450));
GUILayout.BeginHorizontal();
if(GUILayout.Button(item.itemTexture,GUILayout.Height(85),GUILayout.Width(100))){
}
GUILayout.BeginVertical();
GUILayout.Box(item.itemNome,GUILayout.Height(20),GUILayout.Width(130));
GUILayout.BeginHorizontal();
if(GUILayout.Button("Vender",GUILayout.Height(25),GUILayout.Width(65))){
RemoverItem(id);
}
//if(repare){
if(GUILayout.Button("Reparar",GUILayout.Height(25),GUILayout.Width(65))){
}
//}
GUILayout.EndHorizontal();
GUILayout.EndVertical();
GUILayout.EndHorizontal();
GUILayout.EndScrollView ();
GUILayout.EndArea();
}
void OnGUI () {
//Nao sei com buscar quem tem o enum arma para poder mandar minha void MostrarInventario e a void MostrarItemDaTela fazerem
//os objetos do inventario e do mercado mostra na tela
foreach(Item it in inventario2){
}
foreach(ItemDataBase db in shop){
MostrarItemDaTela(db);
}
}
Chilinger- MembroAvançado
-
PONTOS : 3737
REPUTAÇÃO : 42
Idade : 29
Respeito as regras :
Re: Como posso comparar enum de uma class no meu script e buscar todos objetos que tem esse enum.
@ UP para eu ver isto quando conseguir algum tempo livre
Re: Como posso comparar enum de uma class no meu script e buscar todos objetos que tem esse enum.
Voce que um packat disso
Chilinger- MembroAvançado
-
PONTOS : 3737
REPUTAÇÃO : 42
Idade : 29
Respeito as regras :
Re: Como posso comparar enum de uma class no meu script e buscar todos objetos que tem esse enum.
Seria interessante, para ver como você está montando na sua cena.
Re: Como posso comparar enum de uma class no meu script e buscar todos objetos que tem esse enum.
mediafire.com file/6hu82b8t9g8xd8d/inventario%26mercado.rar
o codigo eu dei uma modificada mas se poder fazer exemplo
Objetos a b c d.Em ordem que eu coloco no inspetor
A B
C D
Eu fiz o foreach mas nao estou conseguindo fazer o meu inventario ficar assim.E se possivel nao divulgar o codigo que vc fizer para mim agradeço.
- Código:
using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
public class objtgui : MonoBehaviour {
public Item[] inventario2 = new Item[0];
ArrayList MinhaLista = new ArrayList();
public ItemDataBase[] shop = new ItemDataBase[4];
public Item.ItemTipo tipo;
public float reparo;
public bool repare;
public bool vender;
public bool aparecer;
int id,i,j;
public Vector2 scrollPosition;
// Use this for initialization
void Start() {
MinhaLista.Add ("1");
MinhaLista.Add ("3");
//j = i+1;
}
public void NovoItem(int id){
double di = 10;
if (ItemDataBase.precod <= di){
MinhaLista.Add(id); //Add um novo item na lista
}
}
public void AlterarItem(int ID,string ID2){
MinhaLista[ID] = ID2; //Altera um item usando o numero do item da lista
}
public void RemoverItem(int ID){
double di = 10;
double ve = 20.0 / 100.0;
double final;
if (vender){
final = ItemDataBase.precod*ve;
di += final;
MinhaLista.RemoveAt(ID); //Remover item usando o número do item da lista
//Array.add(inventario2, item);
http://inventario2.Remove(item);
}
}
void MostrarItemDaTela(ItemDataBase item,float x,float y){
GUILayout.BeginArea(new Rect(x,y,175,90),"","box");
GUILayout.BeginArea(new Rect(5,5,80,80));
GUILayout.Box(item.itemTexture,GUILayout.Height(80),GUILayout.Width(80));
GUILayout.EndArea();
GUILayout.BeginArea(new Rect(90,5,80,80));
GUILayout.BeginVertical();
GUILayout.Box(item.itemNome);
GUILayout.Box(item.precot);
if (GUILayout.Button("Comprar")){
NovoItem(item.itemId);
}
GUILayout.EndVertical();
GUILayout.EndArea();
GUILayout.EndArea();
}
void ComprarItem(Item item){
double di = 10;
if (ItemDataBase.precod <= di)
{
MinhaLista.Add(id);
http://inventario2.add(item[item.itemId]);
// inventario2.Add(item);
}
}
void VenderItem(Item item){
double di = 10;
double ve = 20.0 / 100.0;
double final;
if (vender){
final = ItemDataBase.precod*ve;
di += final;
//Array.add(inventario2, item);
http://inventario2.Remove(item);
}
}
//
void MostrarInventario(Item item){
//scrollPosition = GUILayout.BeginScrollView (scrollPosition, GUILayout.Width (100), GUILayout.Height (100));
Rect espaco = new Rect ((Screen.width - 230) - Screen.width/2,(Screen.height/4 - Screen.height/5 + 30),550 ,Screen.height);
GUILayout.BeginArea(espaco);
scrollPosition = GUILayout.BeginScrollView (scrollPosition, GUILayout.Width (200), GUILayout.Height (450));
GUILayout.BeginHorizontal();
if(GUILayout.Button(item.itemTexture,GUILayout.Height(85),GUILayout.Width(100))){
}
GUILayout.BeginVertical();
GUILayout.Box(item.itemNome,GUILayout.Height(20),GUILayout.Width(130));
GUILayout.BeginHorizontal();
if(GUILayout.Button("Vender",GUILayout.Height(25),GUILayout.Width(65))){
RemoverItem(id);
}
//if(repare){
if(GUILayout.Button("Reparar",GUILayout.Height(25),GUILayout.Width(65))){
}
//}
GUILayout.EndHorizontal();
GUILayout.EndVertical();
GUILayout.EndHorizontal();
GUILayout.EndScrollView ();
GUILayout.EndArea();
}
// Update is called once per frame
void OnGUI () {
int contador = 0;
int contadory = 0;
foreach(var element in shop){
if(element.itemTipo == Item.ItemTipo.Armas){
if(contador!=180){
MostrarItemDaTela(element,contador,contadory);
contador=180;
//print ("foi");
}else{
//MostrarItemDaTela(element,contador,0);
MostrarItemDaTela(element,contador,contadory);
contadory=95;
//contador+=180;
if(contadory == 95){
contador=0;
//contadory+=95;
MostrarItemDaTela(element,contador,contadory);
//contadory+=95;
}else{
//contador+=90;
MostrarItemDaTela(element,contador,contadory);
}
}
}
//foreach (var element in inventario2){
/*
if(tipo == Item.ItemTipo.Armas){
} if(GUILayout.Button("teste")&& tipo == Item.ItemTipo.Pe){
print("foi");
} if(tipo == Item.ItemTipo.Perna){
} if(tipo == Item.ItemTipo.Peitoral){
} if(tipo == Item.ItemTipo.Mao){
} if(tipo == Item.ItemTipo.Pulso){
} if(tipo == Item.ItemTipo.Cordao){
} if(tipo == Item.ItemTipo.Anel){
} */
}
}
}
o codigo eu dei uma modificada mas se poder fazer exemplo
Objetos a b c d.Em ordem que eu coloco no inspetor
A B
C D
Eu fiz o foreach mas nao estou conseguindo fazer o meu inventario ficar assim.E se possivel nao divulgar o codigo que vc fizer para mim agradeço.
Chilinger- MembroAvançado
-
PONTOS : 3737
REPUTAÇÃO : 42
Idade : 29
Respeito as regras :
Re: Como posso comparar enum de uma class no meu script e buscar todos objetos que tem esse enum.
Este seu package está dando erros... ele está tentando acessar uma classe que não existe dentro da classe "Item"
Re: Como posso comparar enum de uma class no meu script e buscar todos objetos que tem esse enum.
http://www.mediafire.com/file/aab2l9jtootjf9d/mercado%26inventario.rar
quero que continue conforme eu va colocando numero mas se nao coloca fica assim o ultimo em cima do quarto elemento nao continua em baixo do terceiro elemento.

quero que continue conforme eu va colocando numero mas se nao coloca fica assim o ultimo em cima do quarto elemento nao continua em baixo do terceiro elemento.

Chilinger- MembroAvançado
-
PONTOS : 3737
REPUTAÇÃO : 42
Idade : 29
Respeito as regras :
Re: Como posso comparar enum de uma class no meu script e buscar todos objetos que tem esse enum.
Continuo tendo erros neste seu unitypackage quando tento acessar esta classe:
Está anexando todos os scripts?
- Código:
ItemTipo.Armas
Está anexando todos os scripts?
Re: Como posso comparar enum de uma class no meu script e buscar todos objetos que tem esse enum.
Não tem nao sei por que so tem um script pois eu coloquei 3 ai dentro.
vou te reenviar agora outro.
http://www.mediafire.com/file/xxsmxisu9s7sl3n/marcos.unitypackage
http://www.mediafire.com/file/b34mc81hy2w2epl/marcos.rar
vou te reenviar agora outro.
http://www.mediafire.com/file/xxsmxisu9s7sl3n/marcos.unitypackage
http://www.mediafire.com/file/b34mc81hy2w2epl/marcos.rar
Chilinger- MembroAvançado
-
PONTOS : 3737
REPUTAÇÃO : 42
Idade : 29
Respeito as regras :
Re: Como posso comparar enum de uma class no meu script e buscar todos objetos que tem esse enum.
Não tem como você zipar o projeto e mandar? aqui vai ficar dando erros infinitos por que eu não tenho a DataBase que os scripts estão acessando... não consigo nem compilá-los sem dar erros.
Re: Como posso comparar enum de uma class no meu script e buscar todos objetos que tem esse enum.
Nesse post la em cima tem dois codigos Item e ItemDataBase cria dois scripts com esse nome e coloca no asset que te mandei esse nao mudao
Chilinger- MembroAvançado
-
PONTOS : 3737
REPUTAÇÃO : 42
Idade : 29
Respeito as regras :
Re: Como posso comparar enum de uma class no meu script e buscar todos objetos que tem esse enum.
Aeee, finalmente fiz funcionar... organizei tudo em um script só para conseguir entender melhor.
mas vamos ao que interessa. Parece que você já conseguiu resolver a parte do enum. O que quer fazer agora? mostrar os itens na tela? De qual forma? em forma de tabela? ou um item por vez com um botão para passar adiante?
Por que não usa a UI?
- Código:
using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;
[System.Serializable]
public class Item {
public string itemNome;
public int itemId;
public ItemTipo itemTipo;
public GameObject itemObjeto;
public Texture2D itemTexture;
public enum ItemTipo{
Armas,
Pe,
Perna,
Peitoral,
Mao,
Pulso,
Cordao,
Anel
}
}
[System.Serializable]
public class ItemDataBase : Item {
public string precot;
public static double precod;
public int itemDesc;
public ItemDataBase(string nome, int id, string valor,int desconto, double valorI, ItemTipo tipo, GameObject obj, Texture2D textura){
itemNome = nome;
itemId = id;
itemTexture = textura;
itemObjeto = obj;
precot = valor;
precod = valorI;
itemTipo = tipo;
itemDesc = desconto;
}
}
public class objtgui : MonoBehaviour {
public List<Item> inventario2 = new List<Item>();
public List<ItemDataBase> shop = new List<ItemDataBase>();
public Item.ItemTipo tipo;
public float reparo;
public bool repare;
public bool vender;
public bool aparecer;
int id,i,j;
public Vector2 scrollPosition;
void MostrarItemDaTela(ItemDataBase item,float x,float y){
GUILayout.BeginArea(new Rect(0*x,0*y,170,90),"","box");
GUILayout.BeginArea(new Rect(0,0,100,80));
GUILayout.Box(item.itemTexture,GUILayout.Height(80),GUILayout.Width(80));
GUILayout.EndArea();
GUILayout.BeginArea(new Rect(85,0,80,80));
GUILayout.BeginVertical();
GUILayout.Box(item.itemNome);
GUILayout.Box(item.precot);
if (GUILayout.Button("Comprar")){
ComprarItem(item);
}
GUILayout.EndVertical();
GUILayout.EndArea();
GUILayout.EndArea();
}
void ComprarItem(Item item){
double di = 10;
if (ItemDataBase.precod <= di){
inventario2.Add(item);
}
}
void VenderItem(Item item){
double di = 10;
double ve = 20.0 / 100.0;
double final;
if (vender){
final = ItemDataBase.precod*ve;
di += final;
inventario2.Remove(item);
}
}
void MostrarInventario(Item item){
Rect espaco = new Rect ((Screen.width - 230) - Screen.width/2,(Screen.height/4 - Screen.height/5 + 30),550 ,Screen.height);
GUILayout.BeginArea(espaco);
scrollPosition = GUILayout.BeginScrollView (scrollPosition, GUILayout.Width (200), GUILayout.Height (450));
GUILayout.BeginHorizontal();
if(GUILayout.Button(item.itemTexture,GUILayout.Height(85),GUILayout.Width(100))){
}
GUILayout.BeginVertical();
GUILayout.Box(item.itemNome,GUILayout.Height(20),GUILayout.Width(130));
GUILayout.BeginHorizontal();
if(GUILayout.Button("Vender",GUILayout.Height(25),GUILayout.Width(65))){
VenderItem(item);
}
if(GUILayout.Button("Reparar",GUILayout.Height(25),GUILayout.Width(65))){
}
GUILayout.EndHorizontal();
GUILayout.EndVertical();
GUILayout.EndHorizontal();
GUILayout.EndScrollView ();
GUILayout.EndArea();
}
void OnGUI () {
foreach (var element in shop){
if(element.itemTipo == Item.ItemTipo.Armas){
print("foi");
}
}
for (int x = 0; x < inventario2.Count; x++) {
MostrarInventario(inventario2[x]);
}
}
}
mas vamos ao que interessa. Parece que você já conseguiu resolver a parte do enum. O que quer fazer agora? mostrar os itens na tela? De qual forma? em forma de tabela? ou um item por vez com um botão para passar adiante?
Por que não usa a UI?
Re: Como posso comparar enum de uma class no meu script e buscar todos objetos que tem esse enum.
Vamos la amem.O que eu quero vc conseguiu e eu tambem mas o x agora e colocar em ordem mas 1º 2º em cima do 3º 4º.Mas com a GUILaouyt area eu consigo fazer isso com uma area certo.E as outras duas coisas seriam indicar para outro script qual esta equipado(irei fazer aparecer na tela spawnar a arma) mas tenho que saber qual da lista do inventario e colocar as informaçoes em outros objetos de outra lista que apenas recebam as informaçoes.(Essa parte aqui e HUD com a class inventario + bala + proteçao + sangue)exemplo quanto ira tirar de sangue 10 mas o inimigo tem um equipamento que protege 5 e quantas balas posso atirar.
E por que nao com a Ui pois o jogo esta quase pronto e todo feito na GUI.
E por que nao com a Ui pois o jogo esta quase pronto e todo feito na GUI.
Chilinger- MembroAvançado
-
PONTOS : 3737
REPUTAÇÃO : 42
Idade : 29
Respeito as regras :

» Como eu posso resumir esse script?
» Como posso criar um sistema de pulo para esse script que determina a gravidade.
» Posso juntar esse Script com o de IA Inimigo do MARCOS SCHULTZ ?
» me ajudem, dem uma dica de como posso fazer um limitador para esse codigo
» Como escalar objetos estilo esse jogo?
» Como posso criar um sistema de pulo para esse script que determina a gravidade.
» Posso juntar esse Script com o de IA Inimigo do MARCOS SCHULTZ ?
» me ajudem, dem uma dica de como posso fazer um limitador para esse codigo
» Como escalar objetos estilo esse jogo?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos