elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [C#] The given key was not present in the dictionary en Sistema de Inventario
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C#] The given key was not present in the dictionary en Sistema de Inventario  (Leído 1,624 veces)
z3nth10n


Desconectado Desconectado

Mensajes: 1.583


"Jack of all trades, master of none." - Zenthion


Ver Perfil WWW
[C#] The given key was not present in the dictionary en Sistema de Inventario
« en: 28 Diciembre 2013, 15:14 pm »

Hola muy buenas, pues estoy haciendo un juego, creo que ya lo he dicho, pero lo recuerdo, y bueno pues ya voy por el sistema de Inventarios... Y pues me encontre un snippet de 64kb en JS y lo pasé a C# y he aquí mi pregunta, una parte del sistema que he hecho que es el sistema de Items (bueno lo he vuelto a hacer porque no me gustaba para nada la forma en la que se creaban los items)

Así que me puse manos a la obra he hice esto:

Código
  1. using UnityEngine;
  2. using System.Collections;
  3.  
  4. //ItemDataBase
  5.  
  6. public class ItemScript : MonoBehaviour {
  7.  
  8.    private GameObject LoadItemPrefab(string name) {
  9.       return (GameObject)Resources.Load ("prefabs/Items/"+name);
  10.    }
  11.  
  12.    private Texture LoadItemTex(string name) {
  13.       return (Texture)Resources.Load ("textures/Items/"+name);
  14.    }
  15.  
  16.    void Start() {
  17.  
  18.       Inventory inv = new Inventory();
  19.  
  20.       InventoryItem preset;
  21.  
  22.       preset = new InventoryItem();
  23.       preset.id = 1;
  24.       preset.itemname = "Ring2";
  25.       preset.DisplayName = "Ring of Gods";
  26.       preset.itemtex = LoadItemTex (preset.itemname);
  27.       preset.worldObject = LoadItemPrefab (preset.itemname);
  28.       inv.AddNewItem(preset, preset.itemname); //Aquí se supone que es donde se crea el Item, esto es llamado antes que la clase GameGUI para que el se inserten los Items en el Diccionario....
  29.    }
  30.  
  31. }
  32.  
  33. //Item Class
  34.  
  35. public class InventoryItem
  36. {
  37.    public GameObject worldObject;
  38.    public int id;
  39.    public string itemname;
  40.    public string DisplayName;
  41.    public Texture itemtex;
  42.    public string itemtype;
  43.    public string equipmenttype;
  44.    public string usable;
  45.    public float itemweight;
  46.    public bool droppable;
  47.    public Transform itemmodel;
  48.  
  49.    public int itemstacksize;
  50.    public int itemstacklimit;
  51.    public bool showStack;
  52.  
  53.    public int bagsize;
  54.    public bool showBag;
  55.    public InventoryItem[] BagItem;
  56. }
  57.  
  58. public class Inventory {
  59.  
  60.    private Dictionary<string, InventoryItem> itemsBase = new Dictionary<string, InventoryItem>();
  61.  
  62. public void AddNewItem(InventoryItem item, string name) {
  63.  
  64.    itemsBase.Add (name, item);
  65.  
  66. }
  67.  
  68. public InventoryItem FindItem(string name) {
  69.  
  70.    return itemsBase[name];
  71.  
  72. }
  73.  
  74.  
  75. }
  76.  
  77. public class GameGUI : MonoBehaviour {
  78.  
  79. public void Start() {
  80.  
  81. InventoryItem[] InventorySlots = new InventoryItem[5]; //Se crea un inventario con 5 slots
  82.  
  83. //Y en el slots 3 se añade el Item Ring2...
  84. InventorySlots[3] = FindItem("Ring2"); //Aquí es donde salta la excepción de que no se encontró la Key en el Diccionario.
  85.  
  86. }
  87.  
  88. }

Tampoco le puedo hacer debug al Diccionario por que mi IDE (la que viene por defecto con Unity) es Mono-Develop, y bueno paso de cambiar de IDE al Unity porque es un montón de movidas porque tiene sus propias clases Inheritadas y es un follón.... Cambia mucho el code, y si tengo alguna duda, pues tengo que ir a lo Hardcore sin poder poner Ayuda en la comunidad oficial...

Así que, porque se supone que no encuentra la Key si la función start de la clase ItemScript se llama antes de que se pida la información sobre dicho diccionario.... ??



Un saludo.


En línea


Interesados hablad por Discord.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines