[RESOLVIDO] Obter um valor ne uma lista
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Obter um valor ne uma lista
Parece simples ,mas não tá funcionando ,não consigo obter o valor em uma lista não o valor verdadeiro.
To fazendo um inventário e nele tem a lista de nomes dos itens, slots e quantos itens e logo na quantidade de itens onde estou com o problema.
no script "Pegar" que é usado para adicionar itens ao inventario ,caso já tiver um de mesmo nome ele só aumenta o numero de itens desse mesmo item.
e esse é o script "Item" onde eu defino a variável "numero" que irá setar na tela quantos itens tem.
tem um script do inventario mas ele só seta o nome do item ,na tela.
eu tenho um feedback da variável "quantosItens[]" no spector e lá funciona perfeitamente quando eu aperto o botão adiciona o item e se eu continuar a apertar o a variável "quantosItens[]" sempre recebe mais 1 ,mas quando tento pegar esse valor e passar para o componente UI.Text ele aparece numero aleatório. tipo 5 ,6 ,11 e por ai.
aqui tá o trecho onde eu acredito estar o problema.
obrigado ,kkkkkk não sei se alguém vai ter paciência para analisar ,mas já agradeço de antemão.
To fazendo um inventário e nele tem a lista de nomes dos itens, slots e quantos itens e logo na quantidade de itens onde estou com o problema.
no script "Pegar" que é usado para adicionar itens ao inventario ,caso já tiver um de mesmo nome ele só aumenta o numero de itens desse mesmo item.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Pegar : MonoBehaviour {
private Inventario inventario;
public GameObject itemB;
string itemName;
Item itemSc;
// Use this for initialization
void Start () {
inventario = GameObject.FindGameObjectWithTag("Player").GetComponent<Inventario>();
itemSc = itemB.GetComponent<Item>();
}
// Update is called once per frame
void Update () {
if(Input.GetKeyDown(KeyCode.Z))
{
for (int i = 0; i < inventario.slots.Length; i++)
{
if(inventario.quantosItens[i] == 0)
{
//item vai ser adicionado
inventario.quantosItens[i] += 1;
Instantiate(itemB, inventario.slots[i].transform,false);
break;
}
if(inventario.quantosItens[i] >0)
{
string name = itemB.transform.GetChild(1).GetComponent<Text>().text;
if(inventario.itemName[i] == name)
{
inventario.quantosItens[i] += 1;
itemSc.numero = inventario.quantosItens[i];
//GameObject numero = itemB.transform.Find("Number").gameObject;
//numero.GetComponent<Text>().text = inventario.quantosItens[i].ToString();
break;
}
}
}
}
}
}
e esse é o script "Item" onde eu defino a variável "numero" que irá setar na tela quantos itens tem.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Item : MonoBehaviour {
public string name;
public int numero =0;
public void Faz()
{
}
void Update()
{
//GameObject itemName = transform.Find("Text").gameObject;
//itemName.GetComponent<Text>().text = name;
GameObject quanto = transform.Find("Number").gameObject;
quanto.GetComponent<Text>().text = numero.ToString();
}
}
tem um script do inventario mas ele só seta o nome do item ,na tela.
eu tenho um feedback da variável "quantosItens[]" no spector e lá funciona perfeitamente quando eu aperto o botão adiciona o item e se eu continuar a apertar o a variável "quantosItens[]" sempre recebe mais 1 ,mas quando tento pegar esse valor e passar para o componente UI.Text ele aparece numero aleatório. tipo 5 ,6 ,11 e por ai.
aqui tá o trecho onde eu acredito estar o problema.
- Código:
if(inventario.quantosItens[i] >0)
{
string name = itemB.transform.GetChild(1).GetComponent<Text>().text;
if(inventario.itemName[i] == name)
{
inventario.quantosItens[i] += 1;
itemSc.numero = inventario.quantosItens[i];
//GameObject numero = itemB.transform.Find("Number").gameObject;
//numero.GetComponent<Text>().text = inventario.quantosItens[i].ToString();
break;
}
}
obrigado ,kkkkkk não sei se alguém vai ter paciência para analisar ,mas já agradeço de antemão.
hendrick22- MembroAvançado
- PONTOS : 2688
REPUTAÇÃO : 57
Idade : 25
Respeito as regras :
Re: [RESOLVIDO] Obter um valor ne uma lista
oi pra quem viu nem dei tempo para me ajudarem ,tava com o problema desde ontem ,mas eu fiz uma gambiarra que deu certo.
no script do "Item" eu pequei o Transform do parent do item ,já que nesse inventário o item é filho dos slots ,então peguei o Transform do slot e com isso usei transform.GetSiblingIndex() para pegar qual a posição dele de filho do inventario e isso se tornou o indice do inventario.quantosItens["qual slot"].
isso simplismente resolve mas o script tá uma bagunça kkkk
no script do "Item" eu pequei o Transform do parent do item ,já que nesse inventário o item é filho dos slots ,então peguei o Transform do slot e com isso usei transform.GetSiblingIndex() para pegar qual a posição dele de filho do inventario e isso se tornou o indice do inventario.quantosItens["qual slot"].
isso simplismente resolve mas o script tá uma bagunça kkkk
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Item : MonoBehaviour {
private Inventario inventario;
public string name;
public int numero =0;
public Transform slot;
public int indice;
void Start () {
inventario = GameObject.FindGameObjectWithTag("Player").GetComponent<Inventario>();
}
public void Faz()
{
}
void Update()
{
//GameObject itemName = transform.Find("Text").gameObject;
//itemName.GetComponent<Text>().text = name;
GameObject quanto = transform.Find("Number").gameObject;
//quanto.GetComponent<Text>().text = numero.ToString();
slot = transform.parent.GetComponent<Transform>();
indice = slot.transform.GetSiblingIndex();
quanto.GetComponent<Text>().text = inventario.quantosItens[indice].ToString();
}
}
hendrick22- MembroAvançado
- PONTOS : 2688
REPUTAÇÃO : 57
Idade : 25
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Verificar se objeto ja existe em um Lista
» Como posso obter apenas um componente, ou exceto um, de uma lista? (string.Join)
» [RESOLVIDO] Lista de GameObject
» [RESOLVIDO] Valor médio (Median)
» [RESOLVIDO] Valor de App de Realidade Aumentada.
» Como posso obter apenas um componente, ou exceto um, de uma lista? (string.Join)
» [RESOLVIDO] Lista de GameObject
» [RESOLVIDO] Valor médio (Median)
» [RESOLVIDO] Valor de App de Realidade Aumentada.
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos