SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida :D
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Jogo Mobile - Ultimate Flight Simulator - Real World SDK
Unity - FPS e CPU ???
Usar microfone na Unity
Jogo ficando escuro quando faço a Build pela cena menu
Dúvida sobre movimentação do personagem
[RESOLVIDO] ACESSAR SCRIPT DE OUTRO GAMEOBJECT
Para eu ter shader em meu projeto eu tenho que usar o hdrp ou o 3d padrao?
Rotate Camera Mobile
Sou modelador 3d (!!! Arquitetonico!!!) Disponivel !!!!!!
Preciso de alguém que saiba programação e Raycast
Servidor/cliente usando sockets
Assets carregados com addressables causando erro na versão "buildada"
Jogo multiplayer com salas - não vai para o lobby
Texto - Não escreve no 'play'. Clica mais não digita.
Error Unity Vulkan - Out of memory! (allocating memory for image)
Câmera Não esta renderizando na segunda janela.
Movimento da Câmera No Android
[RESOLVIDO] - Unity não está mais funcionando o "Build and Run"
Precisa de modelador com ou sem experiência
Duvida com "mesclagem" de animação
[TUTORIAL] Como fazer uma gota de água na Unity
Missoes Aparecerem aleatoriamente do nada
Dúvida pafra IOS
botoes não esta funcionando corretamente nem a fisica?
Duvida com NavMeshAgent
COMO AUMENTAR E DIMINUÍ A SENSIBILIDADE DO TOQUE POR CÓDICO (MOBILE)
A Licença da Unity só funciona se eu tiver Internet
Problema com OnTriggerEnter
Transparência ao colidir
bool para evitar de salvar frames repetido
Unity - Transições no AnimatorController rodando errado
problemas com "wall Jump" , atribuir força ao eixo X
Meu Jogo ja Esta Pronto! EXPERIMENTEM!!
JOSTICK NAO SE MOVE
botoes para mobile
ERRO NO SCRIPT FOME E SEDE ETC
CORTAR ARVORES E DROPAR
Configurar sistema
Unity - Sugestões da Loja
Standard Assets para UNITY 5 em ".unitypackage"
Problema com o Shader
[TUTORIAL] Sistema Simples de Falas
Velocímetro Bugado
Como faço para alinhar uma textura na posição absoluta do mundo no shader
Sobre o Tutorial de Cortar Arvores
Erro Mov Player
[TUTORIAL] VELOCIMETRO DE PONTEIRO
[TUTORIAL] Ligar/Desligar luz por Interruptor
Sistema de lampadas
Conversor de movimento do Unity para o MMD [Ajuda]
Script de configurações não esta funcionando corretamente
CAMERA BUGANDO NA TRANSIÇÃO DE CENA
Volante girando errado [AJUDA]
Novo Asset Sistema de Portas e Chaves
ERRO NAS RODAS DO CARRO
[TUTORIAL] Sistema de câmera em primeira pessoa SIMPLES
AJUDA PARA UM SISTEMA DE CHECKPOINT
Jogo offline com Loja?
Unity -TextMeshProUGUI- 1 das coisas q estão deixando a scene lenta p abrir
Detectar quando o animation curve chega no final
Problema com compilação para Android na Unity 2019.4.35
Aplicativo para IOS
Árvores feitas na Unity
RECRUTAMENTO WAR CORE FPS
[RESOLVIDO] Unity - Scrollbar não funciona
[TUTORIAL] AI que cria scripts para você, inclusive scripts para Unity !!!!
[RESOLVIDO] Animando Image na Unity não funciona
Hospedar um jogo multiplay na itch.io
Script para detetectar o movimento do player
Alguém ajuda com um erro por favor? PSDImporter.cs
[RESOLVIDO] - Unity - Rotação da Câmera - Mathf.Clamp não funciona
Alterar textura .unity3d
Comportamento do movimento do inimigo. Sair do caminho e Fugir
Procuro uma equipe
Ajuda Com Sala de Jogo Multiplayer
COMO FAZER A PORTA ABRIR SÓ EMPURRANDO ELA COM O PLAYER?
Visual Studio - Vend os Scripts na Aba "Modo de Exibição de Classe" soltos
app fica fechendo após mobile notification
[RESOLVIDO] Controlar dois player dentro de um jogo multiplay usando mirror
Unity - O Jogo fecha quando vai abrir a Scene
[TUTORIAL] Mudando material
Procuro programador Unity para jogo 2D
AJUDA REALISTIC CAR CONTROLLER
Chama para isqueiro
[RESOLVIDO] Ajuda para destruir objeto
Unity - Sistema de Giro da Tela - Ajuda pfv!
Unity - Touch na Tela do Celular
Dawn Of Hell - Horror Game BR (2022-2023)
Unity - Jogo online ou offline?
ANIMAÇÃO INIMIGO ESTÁ INDO PRA TUDO QUANTO É LADO
[RESOLVIDO] Erro de Script no Android
Bundle Assets, Resources, e Addressables
Jogo online (qual a melhor opção?)
Dúvida sobre como criar o inimigo IA!
Unity dando pause no jogo a cada 4 segundos
bom dia amigos eu sou meio lego nos scripts será que alguem pode me ajudar
JOGO "CHALLENGE" FINALIZADO E DISPONÍVEL PARA BAIXAR.
error CS0246
[TUTORIAL]Como Chamar Um Método Usando Uma String como Parametro
Ontem à(s) 2:41 pm
Ter maio 30, 2023 7:28 pm
Ter maio 30, 2023 6:04 am
Seg maio 29, 2023 7:53 pm
Sáb maio 27, 2023 3:11 pm
Sex maio 26, 2023 4:59 pm
Sex maio 26, 2023 11:27 am
Qui maio 25, 2023 10:33 am
Sáb maio 20, 2023 12:25 pm
Ter maio 16, 2023 5:43 pm
Ter maio 16, 2023 5:42 pm
Ter maio 09, 2023 7:42 pm
Seg maio 08, 2023 7:13 am
Seg maio 08, 2023 6:38 am
Seg maio 08, 2023 1:49 am
Sáb maio 06, 2023 11:44 pm
Sáb maio 06, 2023 6:42 pm
Sáb maio 06, 2023 1:35 am
Qua maio 03, 2023 12:32 pm
Seg maio 01, 2023 8:51 pm
Seg maio 01, 2023 12:29 pm
Dom Abr 30, 2023 8:49 pm
Dom Abr 30, 2023 5:06 pm
Sáb Abr 29, 2023 4:05 pm
Qui Abr 27, 2023 4:39 pm
Qui Abr 27, 2023 12:40 am
Ter Abr 25, 2023 5:33 pm
Ter Abr 25, 2023 10:23 am
Dom Abr 23, 2023 12:11 am
Sáb Abr 22, 2023 4:27 am
Sex Abr 21, 2023 11:38 pm
Sex Abr 21, 2023 10:21 pm
Qui Abr 20, 2023 4:57 pm
Qui Abr 20, 2023 12:28 pm
Qua Abr 19, 2023 3:03 pm
Qua Abr 19, 2023 1:52 pm
Qua Abr 19, 2023 11:59 am
Qua Abr 19, 2023 11:54 am
Sáb Abr 15, 2023 8:13 pm
Sex Abr 14, 2023 7:43 am
Qui Abr 13, 2023 4:36 pm
Qui Abr 13, 2023 4:36 pm
Qua Abr 12, 2023 6:05 pm
Ter Abr 11, 2023 6:22 pm
Seg Abr 10, 2023 7:33 pm
Seg Abr 10, 2023 3:25 pm
Dom Abr 09, 2023 8:53 pm
Dom Abr 09, 2023 7:26 pm
Dom Abr 09, 2023 5:59 pm
Dom Abr 09, 2023 12:06 am
Sex Abr 07, 2023 7:24 pm
Qui Abr 06, 2023 6:45 am
Qua Abr 05, 2023 9:24 am
Ter Abr 04, 2023 4:55 pm
Ter Abr 04, 2023 1:00 pm
Dom Abr 02, 2023 11:52 pm
Sex Mar 31, 2023 12:50 pm
Sex Mar 31, 2023 11:03 am
Sex Mar 31, 2023 10:05 am
Qua Mar 29, 2023 7:48 pm
Ter Mar 28, 2023 10:50 pm
Ter Mar 28, 2023 9:19 am
Seg Mar 27, 2023 10:16 am
Dom Mar 26, 2023 7:39 pm
Qui Mar 23, 2023 4:52 pm
Ter Mar 21, 2023 11:20 pm
Ter Mar 21, 2023 8:52 pm
Sáb Mar 18, 2023 8:41 pm
Sex Mar 17, 2023 3:12 pm
Sex Mar 17, 2023 1:24 pm
Seg Mar 13, 2023 10:45 pm
Seg Mar 13, 2023 9:48 pm
Seg Mar 13, 2023 8:24 pm
Seg Mar 13, 2023 7:17 pm
Dom Mar 12, 2023 10:27 pm
Dom Mar 12, 2023 7:22 pm
Sex Mar 10, 2023 8:26 pm
Sex Mar 10, 2023 8:00 pm
Qui Mar 09, 2023 9:05 am
Ter Mar 07, 2023 2:27 pm
Sex Mar 03, 2023 6:47 pm
Sex Mar 03, 2023 12:01 am
Qui Mar 02, 2023 4:00 pm
Qui Mar 02, 2023 1:35 pm
Qua Mar 01, 2023 5:47 pm
Qua Mar 01, 2023 2:11 am
Seg Fev 27, 2023 11:08 pm
Seg Fev 27, 2023 7:19 pm
Dom Fev 26, 2023 11:49 pm
Dom Fev 26, 2023 8:29 pm
Dom Fev 26, 2023 7:47 pm
Dom Fev 26, 2023 7:46 pm
Dom Fev 26, 2023 6:08 pm
Sáb Fev 25, 2023 8:16 pm
Seg Fev 13, 2023 7:02 pm
Seg Fev 13, 2023 2:44 am
Dom Fev 12, 2023 9:57 pm
Dom Fev 12, 2023 2:19 pm
Sáb Fev 11, 2023 1:01 pm



































































































alguem pode me ajudar com essa adição de item numa lista?

3 participantes

Ir para baixo

DÚVIDA alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Sex maio 13, 2022 2:22 pm

o script fica no object, funcionalidade seria pegar Um ScriptableObject likando a ele e adicionar  a uma lista!

Script Lista:
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;

public class InventoryController : MonoBehaviour
{
   [SerializeField]
   Item[] arrayInventory;

   public List<Item>_Inventory { get; private set; }

   public void Awake()
   {
      _Inventory = new List<Item>();
      _Inventory = arrayInventory.OrderBy(i => i.Name).ToList();
      MouseSensitive.IsClicked += RemoveItem;
   }

   private void OnDestroy()
   {
      MouseSensitive.IsClicked -= RemoveItem;
   }

   public void AddItem(Item item)
   {
      if (item != null)
         _Inventory.Add (item);
   }

   public void RemoveItem(Item item)
   {
      if (item != null)
         _Inventory.Remove (item);
   }

}

script add item:

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class InteragirObjList : MonoBehaviour
{
   public Transform jogador;
   public ScriptableObject ItemDate;
   public InventoryController _Inventory;
   public KeyCode TeclaPegar = KeyCode.P;
   [Range(1,5)]
   public float distanciaMinima = 2;

   void Awake ()
   {
      _Inventory = GetComponent<InventoryController>();
   }

   void Update ()
   {
      if (jogador)
      {
         {
            if (Input.GetKeyDown (TeclaPegar))
            {
               ItemDate += _Inventory.AddItem(item) as ScriptableObject ;
            }
         }
      }
   }
}


Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por dstaroski Seg maio 16, 2022 2:15 pm

Boa tarde meu caro!

O que exatamente está ocorrendo? qual seria o erro? também está faltando postar uma classe, o Item.

Abraço!
dstaroski
dstaroski
Instrutor

Masculino PONTOS : 5764
REPUTAÇÃO : 1123
Idade : 34
Áreas de atuação : Teologia, Unity 3D, C#, HTML, CSS, Dart, Flutter.

Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? Aad8pUi

http://diegodeoliveira.gamejolt.io/defeattheilluminatis

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Seg maio 16, 2022 10:49 pm

dstaroski escreveu:Boa tarde meu caro!

O que exatamente está ocorrendo? qual seria o erro? também está faltando postar uma classe, o Item.

Abraço!
era pra quando o item fosse pego somente o scriptableobject anexado ao script  fosse adicionado  a lista do inventory

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Ter maio 17, 2022 11:09 am

dstaroski escreveu:Boa tarde meu caro!

O que exatamente está ocorrendo? qual seria o erro? também está faltando postar uma classe, o Item.

Abraço!

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;

[CreateAssetMenu (fileName = "New Item", menuName = "Create Item")]
public class Item : ScriptableObject
{
   public GameObject SpawnOBJ;
   public Sprite Icon;
   public string Name;
   public string Description;
   public int ID { get; private set; }
   public int Count { get {
         return
         FindObjectOfType<InventoryController>()._Inventory.FindAll(x => x.ID == this.ID).Count;

         }
   }

   private void OnEnable() =>
   ID = this.GetInstanceID();
}

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pokedlg Ter maio 17, 2022 5:05 pm

Explicação:

Acredito que você tenha errado na classe InteragirObjList na variavel ItemDate, a qual voce deixou com ScriptableObject (pelo que eu entendi o ItemDate seria o objeto a pegar?) e na hora de adicionar o item na linha 26:
Código:
ItemDate += _Inventory.AddItem(item) as ScriptableObject;

Em relação ao ItemDate você teria que colocar a variável como Item, pois ele é uma Classe derivada do ScriptableObject e não a classe ScriptableObject em si. Tente deixar assim:
Código:
public Item ItemDate;

e na linha 26 voce coloca um "+=" para adicionar a lista? Não é assim que se faz a adição a uma lista. Como no outro script você já criou uma void responsável por fazer esta adição na classe InventoryController, tente deixar a linha 26  assim:
Código:
_Inventory.AddItem(ItemDate);


Script Completo com as modificações:
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class InteragirObjList : MonoBehaviour
{
  public Transform jogador;
  public Item ItemDate;
  public InventoryController _Inventory;
  public KeyCode TeclaPegar = KeyCode.P;
  [Range(1,5)]
  public float distanciaMinima = 2;

  void Awake ()
  {
      _Inventory = GetComponent<InventoryController>();
  }

  void Update ()
  {
      if (jogador)
      {
        {
            if (Input.GetKeyDown (TeclaPegar))
            {
              _Inventory.AddItem(ItemDate);
            }
        }
      }
  }
}
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 1801
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? Aad8pUi

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Ter maio 17, 2022 10:18 pm

Pokedlg escreveu:Explicação:

Acredito que você tenha errado na classe InteragirObjList na variavel ItemDate, a qual voce deixou com ScriptableObject (pelo que eu entendi o ItemDate seria o objeto a pegar?) e na hora de adicionar o item na linha 26:
Código:
ItemDate += _Inventory.AddItem(item) as ScriptableObject;

Em relação ao ItemDate você teria que colocar a variável como Item, pois ele é uma Classe derivada do ScriptableObject e não a classe ScriptableObject em si. Tente deixar assim:
Código:
public Item ItemDate;

e na linha 26 voce coloca um "+=" para adicionar a lista? Não é assim que se faz a adição a uma lista. Como no outro script você já criou uma void responsável por fazer esta adição na classe InventoryController, tente deixar a linha 26  assim:
Código:
_Inventory.AddItem(ItemDate);


Script Completo com as modificações:
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class InteragirObjList : MonoBehaviour
{
   public Transform jogador;
   public Item ItemDate;
   public InventoryController _Inventory;
   public KeyCode TeclaPegar = KeyCode.P;
   [Range(1,5)]
   public float distanciaMinima = 2;

   void Awake ()
   {
      _Inventory = GetComponent<InventoryController>();
   }

   void Update ()
   {
      if (jogador)
      {
         {
            if (Input.GetKeyDown (TeclaPegar))
            {
               _Inventory.AddItem(ItemDate);
            }
         }
      }
   }
}
ola boa noite;
o script continua apresentado erro e o item coletado nao aparece na lista//
erro:
NullReferenceException: Object reference not set to an instance of an object
InteragirObjList.Update () (at Assets/Scripts/Sistema de Inventario/InteragirObjList.cs:26)


desde de já agradeço pela ajuda!

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pokedlg Ter maio 17, 2022 10:20 pm

Voce nao definiu o ItemDate, ele é nulo, voce não atribui nenhum valor ao ItemDate, voce tem que colocar que ele é o item mais próximo
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 1801
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? Aad8pUi

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Ter maio 17, 2022 10:44 pm

Pokedlg escreveu:Voce nao definiu o ItemDate, ele é nulo, voce não atribui nenhum valor ao ItemDate, voce tem que colocar que ele é o item mais próximo

poderia me explicar como fazer, sou novato com c#, sei mais +/- o basico

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pokedlg Ter maio 17, 2022 10:55 pm

Fica um pouco dificil sem saber as circunstancias, seu jogo é 3d ou 2d? Voce ja fez o sistema para poder pegar o item, pois sem ele nao tem como voce pegar para poder adicioná-lo no inventário. Porque, vejo que voce tem uma variavel representando a distancia minima, mas nao faz uso dela. o ItemDate seria o item mais perto mesmo ou representa outra coisa?
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 1801
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? Aad8pUi

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Ter maio 17, 2022 11:07 pm

Pokedlg escreveu:Fica um pouco dificil sem saber as circunstancias, seu jogo é 3d ou 2d? Voce ja fez o sistema para poder pegar o item, pois sem ele nao tem como voce pegar para poder adicioná-lo no inventário. Porque, vejo que voce tem uma variavel representando a distancia minima, mas nao faz uso dela. o ItemDate seria o item mais perto mesmo ou representa outra coisa?
o jogo é 3d, o sistema para pegar o item seria esse código, no caso este script iria dentro do obj pagável, ItemDate representa um item"Scriptable' que contem os dados para passar para o inventário, no caso oq seria add na list do inventario seria o scriptable e a distancia  mínima para controlar a distancia entre personagem  e obj para dizer se pode pegar ou n

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pokedlg Ter maio 17, 2022 11:27 pm

Tente assim:
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class InteragirObjList : MonoBehaviour
{
   public Transform jogador;
   public Item ItemDate;
   public InventoryController _Inventory;
   public KeyCode TeclaPegar = KeyCode.P;
   [Range(1,5)]
   public float distanciaMinima = 2;

   void Awake ()
   {
      _Inventory = GetComponent<InventoryController>();
   }

   void Update ()
   {
      float dist = Vector3.Distance(jogador.position, this.gameObject.position);
      if (jogador)
      {
         {
            if (dist <= distanciaMinima && Input.GetKeyDown (TeclaPegar))
            {
               _Inventory.AddItem(ItemDate);
            }
         }
      }
   }
}

Mas lembre-se de atribuir um scriptableobject para o itemDate, por exemplo se o objeto pegável é uma espada, atribui a ele o scriptable object da espada
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 1801
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? Aad8pUi

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Qua maio 18, 2022 3:51 pm

Pokedlg escreveu:Tente assim:
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class InteragirObjList : MonoBehaviour
{
   public Transform jogador;
   public Item ItemDate;
   public InventoryController _Inventory;
   public KeyCode TeclaPegar = KeyCode.P;
   [Range(1,5)]
   public float distanciaMinima = 2;

   void Awake ()
   {
      _Inventory = GetComponent<InventoryController>();
   }

   void Update ()
   {
      float dist = Vector3.Distance(jogador.position, this.gameObject.position);
      if (jogador)
      {
         {
            if (dist <= distanciaMinima && Input.GetKeyDown (TeclaPegar))
            {
               _Inventory.AddItem(ItemDate);
            }
         }
      }
   }
}

Mas lembre-se de atribuir um scriptableobject para o itemDate, por exemplo se o objeto pegável é uma espada, atribui a ele o scriptable object da espada

ainda esta dando erro;
erro: Assets\Scripts\Sistema de Inventario\InteragirObjList.cs(21,67): error CS1061: 'GameObject' does not contain a definition for 'position' and no accessible extension method 'position' accepting a first argument of type 'GameObject' could be found (are you missing a using directive or an assembly reference?)

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pokedlg Qua maio 18, 2022 3:56 pm

Opa, erro meu, esqueci do transform:
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class InteragirObjList : MonoBehaviour
{
  public Transform jogador;
  public Item ItemDate;
  public InventoryController _Inventory;
  public KeyCode TeclaPegar = KeyCode.P;
  [Range(1,5)]
  public float distanciaMinima = 2;

  void Awake ()
  {
      _Inventory = GetComponent<InventoryController>();
  }

  void Update ()
  {
      float dist = Vector3.Distance(jogador.position, this.gameObject.transform.position);
      if (jogador)
      {
        {
            if (dist <= distanciaMinima && Input.GetKeyDown (TeclaPegar))
            {
              _Inventory.AddItem(ItemDate);
            }
        }
      }
  }
}
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 1801
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? Aad8pUi

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Qua maio 18, 2022 4:24 pm

Pokedlg escreveu:Opa, erro meu, esqueci do transform:
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class InteragirObjList : MonoBehaviour
{
   public Transform jogador;
   public Item ItemDate;
   public InventoryController _Inventory;
   public KeyCode TeclaPegar = KeyCode.P;
   [Range(1,5)]
   public float distanciaMinima = 2;

   void Awake ()
   {
      _Inventory = GetComponent<InventoryController>();
   }

   void Update ()
   {
      float dist = Vector3.Distance(jogador.position, this.gameObject.transform.position);
      if (jogador)
      {
         {
            if (dist <= distanciaMinima && Input.GetKeyDown (TeclaPegar))
            {
               _Inventory.AddItem(ItemDate);
            }
         }
      }
   }
}

arrumou a 26, porem a linha 27 apareceu um nv, e continua sem add o Itemdate no inventário ;
erro: NullReferenceException: Object reference not set to an instance of an object
InteragirObjList.Update () (at Assets/Scripts/Sistema de Inventario/InteragirObjList.cs:27)

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pokedlg Qua maio 18, 2022 4:30 pm

Cara é o que eu tinha dito anteriormente, ou é o ItemDate ou o _Inventory é nulo, você atribuiu o scriptableobject na variavel ItemDate de acordo com o item que possui esse script ? o Gameobject que possui esse script contém a classe InventoryController?
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 1801
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? Aad8pUi

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Qua maio 18, 2022 9:07 pm

Pokedlg escreveu:Cara é o que eu tinha dito anteriormente, ou é o ItemDate ou o _Inventory é nulo, você atribuiu o scriptableobject na variavel ItemDate de acordo com o item que possui esse script ? o Gameobject que possui esse script contém a classe InventoryController?
 o Gameobject que possui esse script nao contém a classe InventoryController,  classe InventoryController fica em um Gameobject vazio

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pokedlg Qua maio 18, 2022 9:30 pm

Entao é isso que está causando o problema, voce usa:
Código:
_Inventory = GetComponent<InventoryController>();


Isso faz com que ele procure o script InventoryController no gameobject que vai o InteragirObjList, tente assim:

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class InteragirObjList : MonoBehaviour
{
  public Transform jogador;
  public Item ItemDate;
  public InventoryController _Inventory;
  public KeyCode TeclaPegar = KeyCode.P;
  [Range(1,5)]
  public float distanciaMinima = 2;

  void Awake ()
  {
      _Inventory = FindObjectOfType<InventoryController>();
  }

  void Update ()
  {
      float dist = Vector3.Distance(jogador.position, this.gameObject.transform.position);
      if (jogador)
      {
        {
            if (dist <= distanciaMinima && Input.GetKeyDown (TeclaPegar))
            {
              _Inventory.AddItem(ItemDate);
            }
        }
      }
  }
}       
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 1801
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? Aad8pUi

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Qui maio 19, 2022 1:32 pm

Pokedlg escreveu:Entao é isso que está causando o problema, voce usa:
Código:
_Inventory = GetComponent<InventoryController>();


Isso faz com que ele procure o script InventoryController no gameobject que vai o InteragirObjList, tente assim:

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class InteragirObjList : MonoBehaviour
{
   public Transform jogador;
   public Item ItemDate;
   public InventoryController _Inventory;
   public KeyCode TeclaPegar = KeyCode.P;
   [Range(1,5)]
   public float distanciaMinima = 2;

   void Awake ()
   {
      _Inventory = FindObjectOfType<InventoryController>();
   }

   void Update ()
   {
      float dist = Vector3.Distance(jogador.position, this.gameObject.transform.position);
      if (jogador)
      {
         {
            if (dist <= distanciaMinima && Input.GetKeyDown (TeclaPegar))
            {
               _Inventory.AddItem(ItemDate);
            }
         }
      }
   }
}        

entendi Assim ele procura o script fora do gameobject... o erro sumiu porem msm assim o ItemDate nao é add ao array, ele na entra na lista

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Qui maio 19, 2022 8:59 pm

Pkneves escreveu:
Pokedlg escreveu:Entao é isso que está causando o problema, voce usa:
Código:
_Inventory = GetComponent<InventoryController>();


Isso faz com que ele procure o script InventoryController no gameobject que vai o InteragirObjList, tente assim:

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class InteragirObjList : MonoBehaviour
{
   public Transform jogador;
   public Item ItemDate;
   public InventoryController _Inventory;
   public KeyCode TeclaPegar = KeyCode.P;
   [Range(1,5)]
   public float distanciaMinima = 2;

   void Awake ()
   {
      _Inventory = FindObjectOfType<InventoryController>();
   }

   void Update ()
   {
      float dist = Vector3.Distance(jogador.position, this.gameObject.transform.position);
      if (jogador)
      {
         {
            if (dist <= distanciaMinima && Input.GetKeyDown (TeclaPegar))
            {
               _Inventory.AddItem(ItemDate);
            }
         }
      }
   }
}        

entendi Assim ele procura o script fora do gameobject... o erro sumiu porem msm assim o ItemDate nao é add ao array, ele na entra na lista

ele add o ItemDate no inventorio, porem nao add na arraylist ai quando acesso o painel do inventorio antes de pegar o ItemDate, ele buga quando eu pego e nao aparece mais no inventory, so funciona quando o o painel do inventário  nao foi ativado ainda

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pokedlg Qui maio 19, 2022 10:34 pm

Nao entendi muito bem, Nao aparece o item no inventário quando voce pega ele depois de abrir o inventario? é isso? Em que script colocou o instantiate dos itens no inventário?
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 1801
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? Aad8pUi

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Sex maio 20, 2022 12:37 pm

Pokedlg escreveu:Nao entendi muito bem, Nao aparece o item no inventário quando voce pega ele depois de abrir o inventario? é isso? Em que script colocou o instantiate dos itens no inventário?
ele aparece no canvas do inventário, porem n add na list<t> arraylist, ai o sistema  buga na hora de pegar como expliquei a cima...

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SlotsConfig : MonoBehaviour
{
   public ItemReference _element;

   private List<Item> _inventory;

    void Start()
    {
      _inventory = new List<Item> ();
      _inventory = FindObjectOfType<InventoryController> ()._Inventory;
      InstantiateElements ();
   }

   private void InstantiateElements()                                                                               
   {
      for (int i = 0; i < _inventory.Count; i++)
      {
         if (IsRepeated (i))
            continue;

         (Instantiate(_element, transform) as ItemReference).SetValues(_inventory [i]);
      }
   }

   bool IsRepeated(int i)
   {
      if (i == 0)
         return false;

      return _inventory[i].ID == _inventory[i - 1].ID;
   }
}

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pokedlg Sex maio 20, 2022 1:15 pm

Não entendo como isso acontece sendo que você só faz utilização da arrayInventory na void Awake, quando inicia o jogo, quando ainda não pegou nenhum item, depois não vejo ela sendo utilizada mais em nada que possa ser a causa do problema, Mas caso for isso tente adicionar à array um limite que seria o limite de slots para o inventário e então adicione os itens a array com um loop for:
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;

public class InventoryController : MonoBehaviour
{
  
   public Item[] arrayInventory; //deixe-a publica para podermos acessa-la no outro script
  
   public int inventoryLimit; //no inspector defina um valor limite para que funcione

   public List<Item>_Inventory { get; private set; }

   public void Awake()
   {
      _Inventory = new List<Item>();
      arrayInventory = new Item[inventoryLimit];
      _Inventory = arrayInventory.OrderBy(i => i.Name).ToList();
      MouseSensitive.IsClicked += RemoveItem;
   }

   private void OnDestroy()
   {
      MouseSensitive.IsClicked -= RemoveItem;
   }

   public void AddItem(Item item)
   {
      if (item != null)
         _Inventory.Add (item);
   }

   public void RemoveItem(Item item)
   {
      if (item != null)
         _Inventory.Remove (item);
   }

}

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class InteragirObjList : MonoBehaviour
{
   public Transform jogador;
   public Item ItemDate;
   public InventoryController _Inventory;
   public KeyCode TeclaPegar = KeyCode.P;
   [Range(1,5)]
   public float distanciaMinima = 2;

   void Awake ()
   {
      _Inventory = FindObjectOfType<InventoryController>();
   }

   void Update ()
   {
      float dist = Vector3.Distance(jogador.position, this.gameObject.transform.position);
      if (jogador)
      {
         {
            if (dist <= distanciaMinima && Input.GetKeyDown (TeclaPegar))
            {
               for(int i =0; i<_Inventory.arrayInventory.Length; i++)
              {
                  if(_Inventory.arrayInventory[i] == null)
                  {
                      _Inventory.arrayInventory[i] = ItemDate;
                      break;
                  }
            }
               _Inventory.AddItem(ItemDate);
            }
         }
      }
   }
}        
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 1801
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? Aad8pUi

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Sex maio 20, 2022 4:03 pm

Pokedlg escreveu:Não entendo como isso acontece sendo que você só faz utilização da arrayInventory na void Awake, quando inicia o jogo, quando ainda não pegou nenhum item, depois não vejo ela sendo utilizada mais em nada que possa ser a causa do problema, Mas caso for isso tente adicionar à array um limite que seria o limite de slots para o inventário e então adicione os itens a array com um loop for:
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;

public class InventoryController : MonoBehaviour
{
  
   public Item[] arrayInventory; //deixe-a publica para podermos acessa-la no outro script
  
   public int inventoryLimit; //no inspector defina um valor limite para que funcione

   public List<Item>_Inventory { get; private set; }

   public void Awake()
   {
      _Inventory = new List<Item>();
      arrayInventory = new Item[inventoryLimit];
      _Inventory = arrayInventory.OrderBy(i => i.Name).ToList();
      MouseSensitive.IsClicked += RemoveItem;
   }

   private void OnDestroy()
   {
      MouseSensitive.IsClicked -= RemoveItem;
   }

   public void AddItem(Item item)
   {
      if (item != null)
         _Inventory.Add (item);
   }

   public void RemoveItem(Item item)
   {
      if (item != null)
         _Inventory.Remove (item);
   }

}

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class InteragirObjList : MonoBehaviour
{
   public Transform jogador;
   public Item ItemDate;
   public InventoryController _Inventory;
   public KeyCode TeclaPegar = KeyCode.P;
   [Range(1,5)]
   public float distanciaMinima = 2;

   void Awake ()
   {
      _Inventory = FindObjectOfType<InventoryController>();
   }

   void Update ()
   {
      float dist = Vector3.Distance(jogador.position, this.gameObject.transform.position);
      if (jogador)
      {
         {
            if (dist <= distanciaMinima && Input.GetKeyDown (TeclaPegar))
            {
               for(int i =0; i<_Inventory.arrayInventory.Length; i++)
               {
                   if(_Inventory.arrayInventory[i] == null)
                   {
                       _Inventory.arrayInventory[i] = ItemDate;
                       break;
                   }
            }
               _Inventory.AddItem(ItemDate);
            }
         }
      }
   }
}        
agr s ta adicionando no array, porem continuo com o problema na hora de instanciar no scroll view do painel de inventario, ao acessar o painel antes de pegar o ItemDate, ele meio q buga, e ao fechar o painel e tentar pegar o ItemDate ele nao instancia no scroll view.
Porem quando pego o ItemDate antes do acesso ao painel o script  funciona normal... e ao utilizar a " int inventoryLimit " recebo este erro.
erro:NullReferenceException: Object reference not set to an instance of an object
InventoryController+<>c.<Awake>b__6_0 (Item i) (at Assets/Scripts/Sistema de Inventario/InventoryController.cs:19)
System.Linq.EnumerableSorter`2[TElement,TKey].ComputeKeys (TElement[] elements, System.Int32 count) (at <3dc3a1be8c4f409081a57e8ef88f1fbb>:0)
System.Linq.EnumerableSorter`1[TElement].ComputeMap (TElement[] elements, System.Int32 count) (at <3dc3a1be8c4f409081a57e8ef88f1fbb>:0)
System.Linq.EnumerableSorter`1[TElement].Sort (TElement[] elements, System.Int32 count) (at <3dc3a1be8c4f409081a57e8ef88f1fbb>:0)
System.Linq.OrderedEnumerable`1[TElement].SortedMap (System.Linq.Buffer`1[TElement] buffer) (at <3dc3a1be8c4f409081a57e8ef88f1fbb>:0)
System.Linq.OrderedEnumerable`1[TElement].ToList () (at <3dc3a1be8c4f409081a57e8ef88f1fbb>:0)
System.Linq.Enumerable.ToList[TSource] (System.Collections.Generic.IEnumerable`1[T] source) (at <3dc3a1be8c4f409081a57e8ef88f1fbb>:0)
InventoryController.Awake () (at Assets/Scripts/Sistema de Inventario/InventoryController.cs:19)

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pokedlg Sex maio 20, 2022 4:05 pm

Tenta excluir a linha 19, pra ver se resolve este erro.
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;

public class InventoryController : MonoBehaviour
{
 
  public Item[] arrayInventory; //deixe-a publica para podermos acessa-la no outro script
 
  public int inventoryLimit; //no inspector defina um valor limite para que funcione

  public List<Item>_Inventory { get; private set; }

  public void Awake()
  {
      _Inventory = new List<Item>();
      arrayInventory = new Item[inventoryLimit];
      MouseSensitive.IsClicked += RemoveItem;
  }

  private void OnDestroy()
  {
      MouseSensitive.IsClicked -= RemoveItem;
  }

  public void AddItem(Item item)
  {
      if (item != null)
        _Inventory.Add (item);
  }

  public void RemoveItem(Item item)
  {
      if (item != null)
        _Inventory.Remove (item);
  }

}
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 1801
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? Aad8pUi

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Sex maio 20, 2022 4:45 pm

Pokedlg escreveu:Tenta excluir a linha 19, pra ver se resolve este erro.
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;

public class InventoryController : MonoBehaviour
{
  
   public Item[] arrayInventory; //deixe-a publica para podermos acessa-la no outro script
  
   public int inventoryLimit; //no inspector defina um valor limite para que funcione

   public List<Item>_Inventory { get; private set; }

   public void Awake()
   {
      _Inventory = new List<Item>();
      arrayInventory = new Item[inventoryLimit];
      MouseSensitive.IsClicked += RemoveItem;
   }

   private void OnDestroy()
   {
      MouseSensitive.IsClicked -= RemoveItem;
   }

   public void AddItem(Item item)
   {
      if (item != null)
         _Inventory.Add (item);
   }

   public void RemoveItem(Item item)
   {
      if (item != null)
         _Inventory.Remove (item);
   }

}

O erro sumiu, porém o bagu permanece na instância do item no Scroll Viewr...
Hierarquia do seria Canvas > PainelINVENTORIO> Scroll View> Content ... No caso ele instancia  dentro do Content!

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Sex maio 20, 2022 10:09 pm

Pkneves escreveu:
Pokedlg escreveu:Tenta excluir a linha 19, pra ver se resolve este erro.
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;

public class InventoryController : MonoBehaviour
{
  
   public Item[] arrayInventory; //deixe-a publica para podermos acessa-la no outro script
  
   public int inventoryLimit; //no inspector defina um valor limite para que funcione

   public List<Item>_Inventory { get; private set; }

   public void Awake()
   {
      _Inventory = new List<Item>();
      arrayInventory = new Item[inventoryLimit];
      MouseSensitive.IsClicked += RemoveItem;
   }

   private void OnDestroy()
   {
      MouseSensitive.IsClicked -= RemoveItem;
   }

   public void AddItem(Item item)
   {
      if (item != null)
         _Inventory.Add (item);
   }

   public void RemoveItem(Item item)
   {
      if (item != null)
         _Inventory.Remove (item);
   }

}

O erro sumiu, porém o bagu permanece na instância do item no Scroll Viewr...
Hierarquia do seria Canvas > PainelINVENTORIO> Scroll View> Content ... No caso ele instancia  dentro do Content!
Tem uma classe no projeto chamada menu de pause que controla a ativação do painel de inventário e outra classe Munu que controla a variação de acesso entre painel  de inventário inventário de missões essa classe tem duas voids uma que acessa o painel de menu que pausa o jogo e uma que desativa o painel de o jogo despausa

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pokedlg Sex maio 20, 2022 11:48 pm

Acredito que seja porque voce faz as funções apenas na void Awake e Start o que faz com que ele só funcione uma vez e não em tempo de execução, como tinha falado não precisa modificar o script para adicionar na array, pois ele só era chamada uma vez para colocar os itens para teste ao iniciar o programa. O que você tem que fazer é tornar o inventário funcional enquanto está executando, enquanto ele não foi aberto, ainda não chamou a void Start pois ele está desativado, por isso quando ele é ativado ele executa a void Start apenas uma vez e é quando você abre os slots e faz as instanciações, você citou ess script que ativa o painel do inventário, primeiro tente tornar o método de instanciar statico e publico:

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SlotsConfig : MonoBehaviour
{
  public ItemReference _element;

  private List<Item> _inventory;

    void Start()
    {
      _inventory = new List<Item> ();
      _inventory = FindObjectOfType<InventoryController> ()._Inventory;
  }

  public static void InstantiateElements()                                                                               
  {
      for (int i = 0; i < _inventory.Count; i++)
      {
        if (IsRepeated (i))
            continue;

        (Instantiate(_element, transform) as ItemReference).SetValues(_inventory [i]);
      }
  }

  bool IsRepeated(int i)
  {
      if (i == 0)
        return false;

      return _inventory[i].ID == _inventory[i - 1].ID;
  }
}

e no script de ativar o painel do inventário adicione essa linha logo após ativá-lo:
Código:
SlotsConfig.InstantiateElements();
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 1801
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? Aad8pUi

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Sáb maio 21, 2022 2:14 pm

Pokedlg escreveu:Acredito que seja porque voce faz as funções apenas na void Awake e Start o que faz com que ele só funcione uma vez e não em tempo de execução, como tinha falado não precisa modificar o script para adicionar na array, pois ele só era chamada uma vez para colocar os itens para teste ao iniciar o programa. O que você tem que fazer é tornar o inventário funcional enquanto está executando, enquanto ele não foi aberto, ainda não chamou a void Start pois ele está desativado, por isso quando ele é ativado ele executa a void Start apenas uma vez e é quando você abre os slots e faz as instanciações, você citou ess script que ativa o painel do inventário, primeiro tente tornar o método de instanciar statico e publico:

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SlotsConfig : MonoBehaviour
{
   public ItemReference _element;

   private List<Item> _inventory;

    void Start()
    {
      _inventory = new List<Item> ();
      _inventory = FindObjectOfType<InventoryController> ()._Inventory;
   }

   public static void InstantiateElements()                                                                                
   {
      for (int i = 0; i < _inventory.Count; i++)
      {
         if (IsRepeated (i))
            continue;

         (Instantiate(_element, transform) as ItemReference).SetValues(_inventory [i]);
      }
   }

   bool IsRepeated(int i)
   {
      if (i == 0)
         return false;

      return _inventory[i].ID == _inventory[i - 1].ID;
   }
}

e no script de ativar o painel do inventário adicione essa linha logo após ativá-lo:
Código:
SlotsConfig.InstantiateElements();
apresentou 5 erros:
erro 1:Assets\Scripts\Sistema de Inventario\SlotsConfig.cs(19,23): error CS0120: An object reference is required for the non-static field, method, or property 'SlotsConfig._inventory'

erro 2:Assets\Scripts\Sistema de Inventario\SlotsConfig.cs(21,Cool: error CS0120: An object reference is required for the non-static field, method, or property 'SlotsConfig.IsRepeated(int)'


erro 3:Assets\Scripts\Sistema de Inventario\SlotsConfig.cs(24,17): error CS0120: An object reference is required for the non-static field, method, or property 'SlotsConfig._element'


erro 4:Assets\Scripts\Sistema de Inventario\SlotsConfig.cs(24,27): error CS0120: An object reference is required for the non-static field, method, or property 'Component.transform'


erro 5:Assets\Scripts\Sistema de Inventario\SlotsConfig.cs(24,66): error CS0120: An object reference is required for the non-static field, method, or property 'SlotsConfig._inventory'



este aqui é o script q abre o menu ;

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityStandardAssets.Characters.FirstPerson;

public class PsMenu : MonoBehaviour
{
   [SerializeField] GameObject pauseMenu;
   public KeyCode TeclaMenu = KeyCode.P;
   public GameObject Jogador;
   public GameObject Canvas;

   void Start()
   {
      pauseMenu.SetActive(false);
      Jogador = GameObject.FindWithTag ("Player");
      Canvas.SetActive(true);
   }

   void Update ()
   {
      if (Input.GetKeyDown (TeclaMenu))
      {
         if (pauseMenu.activeSelf == true)
         {
            pauseMenu.SetActive (false);
            Time.timeScale = 1f;
            Jogador.GetComponent<FirstPersonController>().enabled = true;
            Cursor.lockState = CursorLockMode.Locked;
            Cursor.visible = false;
            Canvas.SetActive(true);
         }
         else
         {
            pauseMenu.SetActive (true);
            SlotsConfig.InstantiateElements();
            Time.timeScale = 0f;
            Jogador.GetComponent<FirstPersonController>().enabled = false;
            Cursor.lockState = CursorLockMode.None;
            Cursor.visible = true;
            Canvas.SetActive(false);
         }
       }
   }
      
   public void Pause()
   {
      pauseMenu.SetActive(true);
      Time.timeScale = 0f;
   }

   public void Resume()
   {
      pauseMenu.SetActive(false);
      Time.timeScale = 1f;
   }

   public void Home(int sceneID)
   {
      Time.timeScale = 1f;
      SceneManager.LoadScene(sceneID);
   }

   public void Sair()
   {
      Application.Quit();
   }
}
e esse me permite transitar entre paineis dentro do menu


Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class PaineiMPause : MonoBehaviour
{
   public GameObject PainelMissoes;
   public GameObject PainelIventario;
   public GameObject PainelDiario;

    void Start()
    {
      PainelMissoes.SetActive(false);
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(false);
    }

    void Update()
    {
       
    }

   public void MissoesB()
   {
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(false);
      PainelMissoes.SetActive(true);
   }

   public void InventarioB()
   {
      PainelMissoes.SetActive(false);
      PainelDiario.SetActive(false);
      PainelIventario.SetActive(true);
   }

   public void DiarioB()
   {
      PainelMissoes.SetActive(false);
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(true);
   }
}

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pokedlg Sáb maio 21, 2022 3:13 pm

Ata vdd os outros elementos precisam ser staticos também... deixe essa ideia quieto, tente fazer igual você fez com inventario, criando uma instancia dele e pegando com o FindObject, tente deixar os scrpits assim:
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SlotsConfig : MonoBehaviour
{
  public ItemReference _element;

  private List<Item> _inventory;

    void Start()
    {
      _inventory = new List<Item> ();
      _inventory = FindObjectOfType<InventoryController> ()._Inventory;
  }

  public void InstantiateElements()                                                                               
  {
      for (int i = 0; i < _inventory.Count; i++)
      {
        if (IsRepeated (i))
            continue;

        (Instantiate(_element, transform) as ItemReference).SetValues(_inventory [i]);
      }
  }

  bool IsRepeated(int i)
  {
      if (i == 0)
        return false;

      return _inventory[i].ID == _inventory[i - 1].ID;
  }
}


Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityStandardAssets.Characters.FirstPerson;

public class PsMenu : MonoBehaviour
{
  [SerializeField] GameObject pauseMenu;
  public KeyCode TeclaMenu = KeyCode.P;
  public GameObject Jogador;
  public GameObject Canvas;

  void Start()
  {
      pauseMenu.SetActive(false);
      Jogador = GameObject.FindWithTag ("Player");
      Canvas.SetActive(true);
  }

  void Update ()
  {
      if (Input.GetKeyDown (TeclaMenu))
      {
        if (pauseMenu.activeSelf == true)
        {
            pauseMenu.SetActive (false);
            Time.timeScale = 1f;
            Jogador.GetComponent<FirstPersonController>().enabled = true;
            Cursor.lockState = CursorLockMode.Locked;
            Cursor.visible = false;
            Canvas.SetActive(true);
        }
        else
        {
            pauseMenu.SetActive (true);
            Time.timeScale = 0f;
            Jogador.GetComponent<FirstPersonController>().enabled = false;
            Cursor.lockState = CursorLockMode.None;
            Cursor.visible = true;
            Canvas.SetActive(false);
        }
        }
  }
     
  public void Pause()
  {
      pauseMenu.SetActive(true);
      Time.timeScale = 0f;
  }

  public void Resume()
  {
      pauseMenu.SetActive(false);
      Time.timeScale = 1f;
  }

  public void Home(int sceneID)
  {
      Time.timeScale = 1f;
      SceneManager.LoadScene(sceneID);
  }

  public void Sair()
  {
      Application.Quit();
  }
}

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class PaineiMPause : MonoBehaviour
{
  public GameObject PainelMissoes;
  public GameObject PainelIventario;
  public GameObject PainelDiario;
  public SlotsConfig _slotsConfig;

    void Start()
    {
      PainelMissoes.SetActive(false);
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(false);
    }

    void Update()
    {
       
    }

  public void MissoesB()
  {
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(false);
      PainelMissoes.SetActive(true);
  }

  public void InventarioB()
  {
      PainelMissoes.SetActive(false);
      PainelDiario.SetActive(false);
      PainelIventario.SetActive(true);
      _slotsConfig = FindObjectOfType<SlotsConfig>();
      _slotsConfig.InstantiateElements();
  }

  public void DiarioB()
  {
      PainelMissoes.SetActive(false);
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(true);
  }
}
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 1801
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? Aad8pUi

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Ter maio 24, 2022 4:17 pm

Pokedlg escreveu:Ata vdd os outros elementos precisam ser staticos também... deixe essa ideia quieto, tente fazer igual você fez com inventario, criando uma instancia dele e pegando com o FindObject, tente deixar os scrpits assim:
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SlotsConfig : MonoBehaviour
{
   public ItemReference _element;

   private List<Item> _inventory;

    void Start()
    {
      _inventory = new List<Item> ();
      _inventory = FindObjectOfType<InventoryController> ()._Inventory;
   }

   public void InstantiateElements()                                                                                
   {
      for (int i = 0; i < _inventory.Count; i++)
      {
         if (IsRepeated (i))
            continue;

         (Instantiate(_element, transform) as ItemReference).SetValues(_inventory [i]);
      }
   }

   bool IsRepeated(int i)
   {
      if (i == 0)
         return false;

      return _inventory[i].ID == _inventory[i - 1].ID;
   }
}


Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityStandardAssets.Characters.FirstPerson;

public class PsMenu : MonoBehaviour
{
   [SerializeField] GameObject pauseMenu;
   public KeyCode TeclaMenu = KeyCode.P;
   public GameObject Jogador;
   public GameObject Canvas;

   void Start()
   {
      pauseMenu.SetActive(false);
      Jogador = GameObject.FindWithTag ("Player");
      Canvas.SetActive(true);
   }

   void Update ()
   {
      if (Input.GetKeyDown (TeclaMenu))
      {
         if (pauseMenu.activeSelf == true)
         {
            pauseMenu.SetActive (false);
            Time.timeScale = 1f;
            Jogador.GetComponent<FirstPersonController>().enabled = true;
            Cursor.lockState = CursorLockMode.Locked;
            Cursor.visible = false;
            Canvas.SetActive(true);
         }
         else
         {
            pauseMenu.SetActive (true);
            Time.timeScale = 0f;
            Jogador.GetComponent<FirstPersonController>().enabled = false;
            Cursor.lockState = CursorLockMode.None;
            Cursor.visible = true;
            Canvas.SetActive(false);
         }
        }
   }
      
   public void Pause()
   {
      pauseMenu.SetActive(true);
      Time.timeScale = 0f;
   }

   public void Resume()
   {
      pauseMenu.SetActive(false);
      Time.timeScale = 1f;
   }

   public void Home(int sceneID)
   {
      Time.timeScale = 1f;
      SceneManager.LoadScene(sceneID);
   }

   public void Sair()
   {
      Application.Quit();
   }
}

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class PaineiMPause : MonoBehaviour
{
   public GameObject PainelMissoes;
   public GameObject PainelIventario;
   public GameObject PainelDiario;
   public SlotsConfig _slotsConfig;

    void Start()
    {
      PainelMissoes.SetActive(false);
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(false);
    }

    void Update()
    {
        
    }

   public void MissoesB()
   {
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(false);
      PainelMissoes.SetActive(true);
   }

   public void InventarioB()
   {
      PainelMissoes.SetActive(false);
      PainelDiario.SetActive(false);
      PainelIventario.SetActive(true);
      _slotsConfig = FindObjectOfType<SlotsConfig>();
      _slotsConfig.InstantiateElements();
   }

   public void DiarioB()
   {
      PainelMissoes.SetActive(false);
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(true);
   }
}
bom agr ta instanciando certo porem ao clicar no button UI q abre o PainelInventario na void inventarioB, as vezes buga e acaba intanciando o ItemDate ao clicar no button, acaba instanciando varias vezes o mesmo item, mesmo o obj n estando mais na cena.. apresenta um erro ao abrir painelInventario;
erro: NullReferenceException: Object reference not set to an instance of an object
SlotsConfig.InstantiateElements () (at Assets/Scripts/Sistema de Inventario/SlotsConfig.cs:19)
PaineiMPause.InventarioB () (at Assets/Scripts/PauseMenu/PaineiMPause.cs:39)
UnityEngine.Events.InvokableCall.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.Events.UnityEvent.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.UI.Button.Press () (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:70)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:114)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:57)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:272)
UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:501)

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pokedlg Ter maio 24, 2022 5:05 pm

Tente deixar assim ve se os erros somem: 
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SlotsConfig : MonoBehaviour
{
  public ItemReference _element;

  private List<Item> _inventory;

    void Start()
    {
      _inventory = new List<Item> ();
      _inventory = FindObjectOfType<InventoryController> ()._Inventory;
  }

  public void InstantiateElements()                                                                               
  {
      if(_inventory.Count > 0)
      {
          for (int i = 0; i < _inventory.Count; i++)
          {
              if (IsRepeated (i))
              continue;

              (Instantiate(_element, transform) as ItemReference).SetValues(_inventory [i]);
          }
      }
  }

  bool IsRepeated(int i)
  {
      if (i == 0)
        return false;

      return _inventory[i].ID == _inventory[i - 1].ID;
  }
}

Agora em relação ao instanciar vários itemdate, isso acontece quando abre o inventário? aí ele instancia outro igual?
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 1801
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? Aad8pUi

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Ter maio 24, 2022 5:15 pm

Pokedlg escreveu:Tente deixar assim ve se os erros somem: 
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SlotsConfig : MonoBehaviour
{
   public ItemReference _element;

   private List<Item> _inventory;

    void Start()
    {
      _inventory = new List<Item> ();
      _inventory = FindObjectOfType<InventoryController> ()._Inventory;
   }

   public void InstantiateElements()                                                                                
   {
      if(_inventory.Count > 0)
      {
          for (int i = 0; i < _inventory.Count; i++)
          {
              if (IsRepeated (i))
              continue;

              (Instantiate(_element, transform) as ItemReference).SetValues(_inventory [i]);
          }
      }
   }

   bool IsRepeated(int i)
   {
      if (i == 0)
         return false;

      return _inventory[i].ID == _inventory[i - 1].ID;
   }
}

Agora em relação ao instanciar vários itemdate, isso acontece quando abre o inventário? aí ele instancia outro igual?
s, ao apertar o buttonUI q abre o PainelInventario"void InventorioB" ele instacia o mesmo iten a cada click... duplicando o mesmo itemdate pego em cena

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pokedlg Ter maio 24, 2022 5:46 pm

Tente fazer, que ao sair do inventário ele destrói os itens, e quando abre novamente ele atualiza instanciando sem repetir.
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SlotsConfig : MonoBehaviour
{
  public ItemReference _element;

  private List<Item> _inventory;

    void Start()
    {
      _inventory = new List<Item> ();
      _inventory = FindObjectOfType<InventoryController> ()._Inventory;
  }

  public void InstantiateElements()                                                                               
  {
      if(_inventory.Count > 0)
      {
          for (int i = 0; i < _inventory.Count; i++)
          {
              if (IsRepeated (i))
              continue;

              (Instantiate(_element, transform) as ItemReference).SetValues(_inventory [i]);
          }
      }
  }
 
  public void ClearElements()
  {
      if(_inventory.Count > 0 && transform.GetChild(0).gameObject != null)
      {
          for (int i = 0; i < _inventory.Count; i++)
          {
              Destroy(transform.GetChild(i).gameObject);
          }
      }
  }

  bool IsRepeated(int i)
  {
      if (i == 0)
        return false;

      return _inventory[i].ID == _inventory[i - 1].ID;
  }
}


Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class PaineiMPause : MonoBehaviour
{
  public GameObject PainelMissoes;
  public GameObject PainelIventario;
  public GameObject PainelDiario;
  public SlotsConfig _slotsConfig;

    void Start()
    {
      PainelMissoes.SetActive(false);
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(false);
      _slotsConfig = FindObjectOfType<SlotsConfig>();
    }

    void Update()
    {
       
    }

  public void MissoesB()
  {
      _slotsConfig.ClearElements();
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(false);
      PainelMissoes.SetActive(true);
  }

  public void InventarioB()
  {
      PainelMissoes.SetActive(false);
      PainelDiario.SetActive(false);
      PainelIventario.SetActive(true);
      _slotsConfig.InstantiateElements();
  }

  public void DiarioB()
  {
      _slotsConfig.ClearElements();
      PainelMissoes.SetActive(false);
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(true);
     

  }
}


Eu coloquei a função clearElements nas voids onde torna o painel do inventário desativado, mas talvez essa não seria a melhor forma, porém acredito que irá funcionar.
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 1801
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? Aad8pUi

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Ter maio 24, 2022 8:56 pm

Pokedlg escreveu:Tente fazer, que ao sair do inventário ele destrói os itens, e quando abre novamente ele atualiza instanciando sem repetir.
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SlotsConfig : MonoBehaviour
{
   public ItemReference _element;

   private List<Item> _inventory;

    void Start()
    {
      _inventory = new List<Item> ();
      _inventory = FindObjectOfType<InventoryController> ()._Inventory;
   }

   public void InstantiateElements()                                                                                
   {
      if(_inventory.Count > 0)
      {
          for (int i = 0; i < _inventory.Count; i++)
          {
              if (IsRepeated (i))
              continue;

              (Instantiate(_element, transform) as ItemReference).SetValues(_inventory [i]);
          }
      }
   }
  
   public void ClearElements()
   {
       if(_inventory.Count > 0 && transform.GetChild(0).gameObject != null)
      {
          for (int i = 0; i < _inventory.Count; i++)
          {
              Destroy(transform.GetChild(i).gameObject);
          }
      }
   }

   bool IsRepeated(int i)
   {
      if (i == 0)
         return false;

      return _inventory[i].ID == _inventory[i - 1].ID;
   }
}


Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class PaineiMPause : MonoBehaviour
{
   public GameObject PainelMissoes;
   public GameObject PainelIventario;
   public GameObject PainelDiario;
   public SlotsConfig _slotsConfig;

    void Start()
    {
      PainelMissoes.SetActive(false);
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(false);
      _slotsConfig = FindObjectOfType<SlotsConfig>();
    }

    void Update()
    {
        
    }

   public void MissoesB()
   {
      _slotsConfig.ClearElements();
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(false);
      PainelMissoes.SetActive(true);
   }

   public void InventarioB()
   {
      PainelMissoes.SetActive(false);
      PainelDiario.SetActive(false);
      PainelIventario.SetActive(true);
      _slotsConfig.InstantiateElements();
   }

   public void DiarioB()
   {
      _slotsConfig.ClearElements();
      PainelMissoes.SetActive(false);
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(true);
      

   }
}


Eu coloquei a função clearElements nas voids onde torna o painel do inventário desativado, mas talvez essa não seria a melhor forma, porém acredito que irá funcionar.
erro1: UnityException: Transform child out of bounds
SlotsConfig.ClearElements () (at Assets/Scripts/Sistema de Inventario/SlotsConfig.cs:33)
PaineiMPause.DiarioB () (at Assets/Scripts/PauseMenu/PaineiMPause.cs:45)
UnityEngine.Events.InvokableCall.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.Events.UnityEvent.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.UI.Button.Press () (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:70)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:114)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:57)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:272)
UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:501)

erro 2 :UnityException: Transform child out of bounds
SlotsConfig.ClearElements () (at Assets/Scripts/Sistema de Inventario/SlotsConfig.cs:33)
PaineiMPause.MissoesB () (at Assets/Scripts/PauseMenu/PaineiMPause.cs:29)
UnityEngine.Events.InvokableCall.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.Events.UnityEvent.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.UI.Button.Press () (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:70)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:114)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:57)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:272)
UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:501)


erro 3 : UnityException: Transform child out of bounds
SlotsConfig.ClearElements () (at Assets/Scripts/Sistema de Inventario/SlotsConfig.cs:37)
PaineiMPause.MissoesB () (at Assets/Scripts/PauseMenu/PaineiMPause.cs:29)
UnityEngine.Events.InvokableCall.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.Events.UnityEvent.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.UI.Button.Press () (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:70)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:114)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:57)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:272)
UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:501)


erro 4: UnityException: Transform child out of bounds
SlotsConfig.ClearElements () (at Assets/Scripts/Sistema de Inventario/SlotsConfig.cs:37)
PaineiMPause.DiarioB () (at Assets/Scripts/PauseMenu/PaineiMPause.cs:45)
UnityEngine.Events.InvokableCall.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.Events.UnityEvent.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.UI.Button.Press () (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:70)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:114)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:57)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:272)
UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:501)

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pokedlg Ter maio 24, 2022 10:04 pm

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SlotsConfig : MonoBehaviour
{
   public ItemReference _element;

   private List<Item> _inventory;

    void Start()
    {
      _inventory = new List<Item> ();
      _inventory = FindObjectOfType<InventoryController> ()._Inventory;
   }

   public void InstantiateElements()                                                                                
   {
      if(_inventory.Count > 0)
      {
          for (int i = 0; i < _inventory.Count; i++)
          {
              if (IsRepeated (i))
              continue;

              (Instantiate(_element, transform) as ItemReference).SetValues(_inventory [i]);
          }
      }
   }
  
   public void ClearElements()
   {
       if(_inventory.Count > 0 && transform.childCount > 0)
      {
          for (int i = 0; i < _inventory.Count; i++)
          {
              Destroy(transform.GetChild(i).gameObject);
          }
      }
   }

   bool IsRepeated(int i)
   {
      if (i == 0)
         return false;

      return _inventory[i].ID == _inventory[i - 1].ID;
   }
}

tenta assim,
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 1801
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? Aad8pUi

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Qua maio 25, 2022 1:08 am

Pokedlg escreveu:
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SlotsConfig : MonoBehaviour
{
   public ItemReference _element;

   private List<Item> _inventory;

    void Start()
    {
      _inventory = new List<Item> ();
      _inventory = FindObjectOfType<InventoryController> ()._Inventory;
   }

   public void InstantiateElements()                                                                                
   {
      if(_inventory.Count > 0)
      {
          for (int i = 0; i < _inventory.Count; i++)
          {
              if (IsRepeated (i))
              continue;

              (Instantiate(_element, transform) as ItemReference).SetValues(_inventory [i]);
          }
      }
   }
  
   public void ClearElements()
   {
       if(_inventory.Count > 0 && transform.childCount > 0)
      {
          for (int i = 0; i < _inventory.Count; i++)
          {
              Destroy(transform.GetChild(i).gameObject);
          }
      }
   }

   bool IsRepeated(int i)
   {
      if (i == 0)
         return false;

      return _inventory[i].ID == _inventory[i - 1].ID;
   }
}

tenta assim,
erro 1: NullReferenceException: Object reference not set to an instance of an object
PaineiMPause.InventarioB () (at Assets/Scripts/PauseMenu/PaineiMPause.cs:40)
UnityEngine.Events.InvokableCall.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.Events.UnityEvent.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.UI.Button.Press () (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:70)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:114)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:57)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:272)
UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:501)


erro 2 : NullReferenceException: Object reference not set to an instance of an object
PaineiMPause.MissoesB () (at Assets/Scripts/PauseMenu/PaineiMPause.cs:29)
UnityEngine.Events.InvokableCall.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.Events.UnityEvent.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.UI.Button.Press () (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:70)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:114)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:57)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:272)
UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:501)

erro  3 : NullReferenceException: Object reference not set to an instance of an object
PaineiMPause.DiarioB () (at Assets/Scripts/PauseMenu/PaineiMPause.cs:45)
UnityEngine.Events.InvokableCall.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.Events.UnityEvent.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.UI.Button.Press () (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:70)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:114)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:57)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:272)
UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:501)

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Qua maio 25, 2022 1:37 am

Pkneves escreveu:
Pokedlg escreveu:
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SlotsConfig : MonoBehaviour
{
   public ItemReference _element;

   private List<Item> _inventory;

    void Start()
    {
      _inventory = new List<Item> ();
      _inventory = FindObjectOfType<InventoryController> ()._Inventory;
   }

   public void InstantiateElements()                                                                                
   {
      if(_inventory.Count > 0)
      {
          for (int i = 0; i < _inventory.Count; i++)
          {
              if (IsRepeated (i))
              continue;

              (Instantiate(_element, transform) as ItemReference).SetValues(_inventory [i]);
          }
      }
   }
  
   public void ClearElements()
   {
       if(_inventory.Count > 0 && transform.childCount > 0)
      {
          for (int i = 0; i < _inventory.Count; i++)
          {
              Destroy(transform.GetChild(i).gameObject);
          }
      }
   }

   bool IsRepeated(int i)
   {
      if (i == 0)
         return false;

      return _inventory[i].ID == _inventory[i - 1].ID;
   }
}

tenta assim,
erro 1: NullReferenceException: Object reference not set to an instance of an object
PaineiMPause.InventarioB () (at Assets/Scripts/PauseMenu/PaineiMPause.cs:40)
UnityEngine.Events.InvokableCall.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.Events.UnityEvent.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.UI.Button.Press () (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:70)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:114)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:57)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:272)
UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:501)


erro 2 : NullReferenceException: Object reference not set to an instance of an object
PaineiMPause.MissoesB () (at Assets/Scripts/PauseMenu/PaineiMPause.cs:29)
UnityEngine.Events.InvokableCall.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.Events.UnityEvent.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.UI.Button.Press () (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:70)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:114)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:57)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:272)
UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:501)

erro  3 : NullReferenceException: Object reference not set to an instance of an object
PaineiMPause.DiarioB () (at Assets/Scripts/PauseMenu/PaineiMPause.cs:45)
UnityEngine.Events.InvokableCall.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.Events.UnityEvent.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.UI.Button.Press () (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:70)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:114)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:57)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:272)
UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:501)

 a class SlotsConfig fica no "content" do painelInventorio.. e a classe PaineiMPause fica no inspector do Scroll view "pause menu"..hierarquia a seguir;

                                                                            - fundo lt
Canvas-Pause Menu - Inpector (Script = PaineiMPause)  - dadosPlayer
                                                                            - PanelMissoes
                                                                            - PanelInventario - scroll view - viewport - content (Script = slotsconfig). 
                                                                            - PainelDiario

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pokedlg Qua maio 25, 2022 10:14 pm

Tente deixar a class PaineiMPause assim:
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class PaineiMPause : MonoBehaviour
{
  public GameObject PainelMissoes;
  public GameObject PainelIventario;
  public GameObject PainelDiario;
  public SlotsConfig _slotsConfig;
  private bool enterInventory = false;

    void Start()
    {
      PainelMissoes.SetActive(false);
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(false);
    }

    void Update()
    {
       
    }

  public void MissoesB()
  {
      if(enterInventory)_slotsConfig.ClearElements();
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(false);
      PainelMissoes.SetActive(true);
      enterInventory = false;
  }

  public void InventarioB()
  {
      PainelMissoes.SetActive(false);
      PainelDiario.SetActive(false);
      PainelIventario.SetActive(true);
      enterInventory = true;
      _slotsConfig = FindObjectOfType<SlotsConfig>();
      _slotsConfig.InstantiateElements();
  }

  public void DiarioB()
  {
      if(enterInventory)_slotsConfig.ClearElements();
      PainelMissoes.SetActive(false);
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(true);
      enterInventory = false;
  }
}

e o SlotsConfig
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SlotsConfig : MonoBehaviour
{
  public ItemReference _element;

  private List<Item> _inventory;

    void Start()
    {
      _inventory = new List<Item> ();
      _inventory = FindObjectOfType<InventoryController> ()._Inventory;
  }

  public void InstantiateElements()                                                                               
  {
      if(_inventory.Count > 0)
      {
          for (int i = 0; i < _inventory.Count; i++)
          {
              if (IsRepeated (i))
              continue;

              (Instantiate(_element, transform) as ItemReference).SetValues(_inventory [i]);
          }
      }
  }
 
  public void ClearElements()
  {
      if(_inventory.Count > 0 && transform.childCount > 0)
      {
          for (int i = 0; i < _inventory.Count; i++)
          {
              Destroy(transform.GetChild(i).gameObject);
          }
      }
  }

  bool IsRepeated(int i)
  {
      if (i == 0)
        return false;

      return _inventory[i].ID == _inventory[i - 1].ID;
  }
}
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 1801
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? Aad8pUi

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Qui maio 26, 2022 12:35 am

Pokedlg escreveu:Tente deixar a class PaineiMPause assim:
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class PaineiMPause : MonoBehaviour
{
   public GameObject PainelMissoes;
   public GameObject PainelIventario;
   public GameObject PainelDiario;
   public SlotsConfig _slotsConfig;
   private bool enterInventory = false;

    void Start()
    {
      PainelMissoes.SetActive(false);
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(false);
    }

    void Update()
    {
        
    }

   public void MissoesB()
   {
      if(enterInventory)_slotsConfig.ClearElements();
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(false);
      PainelMissoes.SetActive(true);
      enterInventory = false;
   }

   public void InventarioB()
   {
      PainelMissoes.SetActive(false);
      PainelDiario.SetActive(false);
      PainelIventario.SetActive(true);
      enterInventory = true;
      _slotsConfig = FindObjectOfType<SlotsConfig>();
      _slotsConfig.InstantiateElements();
   }

   public void DiarioB()
   {
      if(enterInventory)_slotsConfig.ClearElements();
      PainelMissoes.SetActive(false);
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(true);
      enterInventory = false;
   }
}

e o SlotsConfig
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SlotsConfig : MonoBehaviour
{
   public ItemReference _element;

   private List<Item> _inventory;

    void Start()
    {
      _inventory = new List<Item> ();
      _inventory = FindObjectOfType<InventoryController> ()._Inventory;
   }

   public void InstantiateElements()                                                                                
   {
      if(_inventory.Count > 0)
      {
          for (int i = 0; i < _inventory.Count; i++)
          {
              if (IsRepeated (i))
              continue;

              (Instantiate(_element, transform) as ItemReference).SetValues(_inventory [i]);
          }
      }
   }
  
   public void ClearElements()
   {
       if(_inventory.Count > 0 && transform.childCount > 0)
      {
          for (int i = 0; i < _inventory.Count; i++)
          {
              Destroy(transform.GetChild(i).gameObject);
          }
      }
   }

   bool IsRepeated(int i)
   {
      if (i == 0)
         return false;

      return _inventory[i].ID == _inventory[i - 1].ID;
   }
}
erro : NullReferenceException: Object reference not set to an instance of an object
SlotsConfig.InstantiateElements () (at Assets/Scripts/Sistema de Inventario/SlotsConfig.cs:19)
PaineiMPause.InventarioB () (at Assets/Scripts/PauseMenu/PaineiMPause.cs:43)
UnityEngine.Events.InvokableCall.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.Events.UnityEvent.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.UI.Button.Press () (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:70)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:114)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:57)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:272)
UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:501)

eu testei aqui e a cada click no button "void InventorioB" q abre o painel de inventario esta instanciando replicas do o ItemDate pego em cena

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pokedlg Qui maio 26, 2022 2:00 pm

Voce poderia me mandar uma imagem do seu canvas para eu ter uma noção da interface?
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 1801
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? Aad8pUi

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pokedlg Qui maio 26, 2022 2:31 pm

Ok, mas uma tentativa...

Deixe SlotsConfig assim:
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SlotsConfig : MonoBehaviour
{
  public ItemReference _element;

  private List<Item> _inventory;

    void Start()
    {
      _inventory = new List<Item> ();
      _inventory = FindObjectOfType<InventoryController> ()._Inventory;
  }

  public void InstantiateElements()                                                                               
  {
      ClearElements();
      if(_inventory.Count > 0)
      {
          for (int i = 0; i < _inventory.Count; i++)
          {
              if (IsRepeated (i))
              continue;

              (Instantiate(_element, transform) as ItemReference).SetValues(_inventory [i]);
          }
      }
  }
 
  public void ClearElements()
  {
      if(_inventory.Count > 0 && transform.childCount > 0)
      {
          for (int i = 0; i < _inventory.Count; i++)
          {
              Destroy(transform.GetChild(i).gameObject);
          }
      }
  }

  bool IsRepeated(int i)
  {
      if (i == 0)
        return false;

      return _inventory[i].ID == _inventory[i - 1].ID;
  }
}


e o PainelPause
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class PaineiMPause : MonoBehaviour
{
  public GameObject PainelMissoes;
  public GameObject PainelIventario;
  public GameObject PainelDiario;
  public SlotsConfig _slotsConfig;

    void Start()
    {
      PainelMissoes.SetActive(false);
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(false);
    }

    void Update()
    {
       
    }

  public void MissoesB()
  {
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(false);
      PainelMissoes.SetActive(true);
  }

  public void InventarioB()
  {
      PainelMissoes.SetActive(false);
      PainelDiario.SetActive(false);
      PainelIventario.SetActive(true);
      _slotsConfig = FindObjectOfType<SlotsConfig>();
      _slotsConfig.InstantiateElements();
  }

  public void DiarioB()
  {
      PainelMissoes.SetActive(false);
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(true);
  }
}
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 1801
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? Aad8pUi

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Qui maio 26, 2022 4:00 pm

Pokedlg escreveu:Ok, mas uma tentativa...

Deixe SlotsConfig assim:
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SlotsConfig : MonoBehaviour
{
   public ItemReference _element;

   private List<Item> _inventory;

    void Start()
    {
      _inventory = new List<Item> ();
      _inventory = FindObjectOfType<InventoryController> ()._Inventory;
   }

   public void InstantiateElements()                                                                                
   {
      ClearElements();
      if(_inventory.Count > 0)
      {
          for (int i = 0; i < _inventory.Count; i++)
          {
              if (IsRepeated (i))
              continue;

              (Instantiate(_element, transform) as ItemReference).SetValues(_inventory [i]);
          }
      }
   }
  
   public void ClearElements()
   {
       if(_inventory.Count > 0 && transform.childCount > 0)
      {
          for (int i = 0; i < _inventory.Count; i++)
          {
              Destroy(transform.GetChild(i).gameObject);
          }
      }
   }

   bool IsRepeated(int i)
   {
      if (i == 0)
         return false;

      return _inventory[i].ID == _inventory[i - 1].ID;
   }
}


e o PainelPause
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class PaineiMPause : MonoBehaviour
{
   public GameObject PainelMissoes;
   public GameObject PainelIventario;
   public GameObject PainelDiario;
   public SlotsConfig _slotsConfig;

    void Start()
    {
      PainelMissoes.SetActive(false);
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(false);
    }

    void Update()
    {
        
    }

   public void MissoesB()
   {
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(false);
      PainelMissoes.SetActive(true);
   }

   public void InventarioB()
   {
      PainelMissoes.SetActive(false);
      PainelDiario.SetActive(false);
      PainelIventario.SetActive(true);
      _slotsConfig = FindObjectOfType<SlotsConfig>();
      _slotsConfig.InstantiateElements();
   }

   public void DiarioB()
   {
      PainelMissoes.SetActive(false);
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(true);
   }
}

erro 1: NullReferenceException: Object reference not set to an instance of an object
SlotsConfig.ClearElements () (at Assets/Scripts/Sistema de Inventario/SlotsConfig.cs:34)
SlotsConfig.InstantiateElements () (at Assets/Scripts/Sistema de Inventario/SlotsConfig.cs:19)
PaineiMPause.InventarioB () (at Assets/Scripts/PauseMenu/PaineiMPause.cs:39)
UnityEngine.Events.InvokableCall.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.Events.UnityEvent.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.UI.Button.Press () (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:70)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:114)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:57)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:272)
UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:501)

erro 2: UnityException: Transform child out of bounds
SlotsConfig.ClearElements () (at Assets/Scripts/Sistema de Inventario/SlotsConfig.cs:38)
SlotsConfig.InstantiateElements () (at Assets/Scripts/Sistema de Inventario/SlotsConfig.cs:19)
PaineiMPause.InventarioB () (at Assets/Scripts/PauseMenu/PaineiMPause.cs:39)
UnityEngine.Events.InvokableCall.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.Events.UnityEvent.Invoke () (at <13e6546058e340ada820e34dce3b245e>:0)
UnityEngine.UI.Button.Press () (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:70)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:114)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:57)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:272)
UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:501)

parou de duplicar os iten, porem agr so instacia apos o click no inventário duas vezes e so se o painel tiver aberto...
mano me desculpa ai o incomodo e obrigado pela ajuda com este script.. o projeto ta quase pronto so esse sistema de inventário q ta dificio

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pokedlg Qui maio 26, 2022 4:15 pm

Que nada, é um grande prazer ajudar  Smile. Amigo você conseguiria mandar uma imagem da interface ou um video do problema?
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 1801
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? Aad8pUi

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Ter maio 31, 2022 8:09 pm

Pokedlg escreveu:Que nada, é um grande prazer ajudar  Smile. Amigo você conseguiria mandar uma imagem da interface ou um video do problema?
 tenta assisti ai

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pokedlg Qua Jun 01, 2022 2:20 pm

Que estranho... Será que ele não está pegando o SlotsConfig? Voce consegue ver no inspector, sem deixar em tela cheia, ao clicar no botão de inventário na primeira vez se ele pega o slotsconfig?
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 1801
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? Aad8pUi

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Qua Jun 01, 2022 5:12 pm

Pokedlg escreveu:Que estranho... Será que ele não está pegando o SlotsConfig? Voce consegue ver no inspector, sem deixar em tela cheia, ao clicar no botão de inventário na primeira vez se ele pega o slotsconfig?
 
Assisti esse


Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pokedlg Qua Jun 01, 2022 5:35 pm

Caramba ta dificil de acertar kk, eu nao consigo entender o que pode estar causando isso, pq nois associa o SlotsConfig e o _inventory. Talvez tente assim:
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SlotsConfig : MonoBehaviour
{
  public ItemReference _element;

  private List<Item> _inventory;

    void Start()
    {
      _inventory = new List<Item> ();
      _inventory = FindObjectOfType<InventoryController> ()._Inventory;
  }

  public void InstantiateElements()                                                                               
  {
      if(transform.childCount > 0) ClearElements();
      if(_inventory.Count > 0)
      {
          for (int i = 0; i < _inventory.Count; i++)
          {
              if (IsRepeated (i))
              continue;

              (Instantiate(_element, transform) as ItemReference).SetValues(_inventory [i]);
          }
      }
  }
 
  public void ClearElements()
  {
      for (int i = 0; i < _inventory.Count; i++)
      {
          Destroy(transform.GetChild(i).gameObject);
      }
  }

  bool IsRepeated(int i)
  {
      if (i == 0)
        return false;

      return _inventory[i].ID == _inventory[i - 1].ID;
  }
}
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 1801
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? Aad8pUi

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pkneves Qui Jun 02, 2022 9:05 am

Pokedlg escreveu:Caramba ta dificil de acertar kk, eu nao consigo entender o que pode estar causando isso, pq nois associa o SlotsConfig e o _inventory. Talvez tente assim:
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SlotsConfig : MonoBehaviour
{
   public ItemReference _element;

   private List<Item> _inventory;

    void Start()
    {
      _inventory = new List<Item> ();
      _inventory = FindObjectOfType<InventoryController> ()._Inventory;
   }

   public void InstantiateElements()                                                                                
   {
      if(transform.childCount > 0) ClearElements();
      if(_inventory.Count > 0)
      {
          for (int i = 0; i < _inventory.Count; i++)
          {
              if (IsRepeated (i))
              continue;

              (Instantiate(_element, transform) as ItemReference).SetValues(_inventory [i]);
          }
      }
   }
  
   public void ClearElements()
   {
       for (int i = 0; i < _inventory.Count; i++)
       {
           Destroy(transform.GetChild(i).gameObject);
       }
   }

   bool IsRepeated(int i)
   {
      if (i == 0)
         return false;

      return _inventory[i].ID == _inventory[i - 1].ID;
   }
}


quer dar uma olhada na scene ? , te envio um link do arq na nuvem

Pkneves
Avançado
Avançado

PONTOS : 845
REPUTAÇÃO : 10
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? WvDYdlf

Ir para o topo Ir para baixo

DÚVIDA Re: alguem pode me ajudar com essa adição de item numa lista?

Mensagem por Pokedlg Sex Jun 03, 2022 4:28 pm

A versão da unity não é a mesma, causando diversos erros de compilação, mas eu fiz um pequena réplica do problema, com o inventário e os mesmos scripts e finalmente consegui resolver, pelo menos aqui deu certo, foram simples modificações:
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SlotsConfig : MonoBehaviour
{
    public ItemReference _element;
    public List<Item> _inventory;

    void Start()
    {
      _inventory = new List<Item>();
      _inventory = FindObjectOfType<InventoryController> ()._Inventory;
      InstantiateElements();
    }

    public void InstantiateElements()
    {
        ClearElements();
        if(_inventory.Count > 0 )
        {
            for (int i = 0; i < _inventory.Count; i++)
          {
              if (IsRepeated (i))
              continue;

              (Instantiate(_element, transform) as ItemReference).SetValues(_inventory [i]);
          }
        }
    }
 
  public void ClearElements()
  {
      if(transform.childCount > 0)
      {
          for (int i = 0; i < transform.childCount; i++)
          {
              Destroy(transform.GetChild(i).gameObject);
          }
      }
  }

  bool IsRepeated(int i)
  {
      if (i == 0)
        return false;

      return _inventory[i].ID == _inventory[i - 1].ID;
  }
}


Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class PaineiMPause : MonoBehaviour
{
  public GameObject PainelMissoes;
  public GameObject PainelIventario;
  public GameObject PainelDiario;
  public SlotsConfig _slotsConfig;

    void Start()
    {
      PainelMissoes.SetActive(false);
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(false);
    }

    void Update()
    {
       
    }

  public void MissoesB()
  {
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(false);
      PainelMissoes.SetActive(true);
  }

  public void InventarioB()
  {
      PainelMissoes.SetActive(false);
      PainelDiario.SetActive(false);
      PainelIventario.SetActive(true);
      if(PainelIventario.activeSelf)
      {
          _slotsConfig = FindObjectOfType<SlotsConfig>();
          _slotsConfig.InstantiateElements();
      }
  }

  public void DiarioB()
  {
      PainelMissoes.SetActive(false);
      PainelIventario.SetActive(false);
      PainelDiario.SetActive(true);
  }
}

Video Teste que deu certo, sem erros:


Eu fiz que quando eu aperto "F" pego o item, por isso os itens vao aparecendo.
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 1801
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : alguem pode me ajudar com essa adição de item numa lista? Aad8pUi

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos