public void OnLoad(Dictionary <string, object> data) { // Goto position exitID = (int)data["player@exitID"]; SpawnPoint exit = SpawnPoint.GetFromID(exitID); if (exit) { transform.position = exit.transform.position; transform.rotation = exit.transform.rotation; } // Load coreitems PlayerInventory inventory = FindObjectOfType <PlayerInventory>(); ItemData equippedData = (ItemData)data["player@equipped"]; for (int i = 0; i < inventory.coreItems.Length; i++) { ItemData itemData = (ItemData)data["player@coreItem#" + i]; if (itemData.prefab == null) { continue; } GameObject clone = Instantiate(ItemDataBase.GetPrefab(itemData.prefab)) as GameObject; UniqueId uuid = clone.GetComponent <UniqueId>(); uuid.uniqueId = itemData.uuid; _CoreItem item = clone.GetComponent <_CoreItem>(); if (equippedData.uuid == itemData.uuid) { // Send to equipped inventory.coreItems[item.targetSlot] = item; inventory.MoveToEquipped(item); item.OnPickup(); equippedData.prefab = null; } else { // Send to inventory inventory.coreItems[item.targetSlot] = item; inventory.MoveToInventory(item); item.OnPickup(); } } if (equippedData.prefab != null) { // Spawn as equipped GameObject clone = Instantiate(ItemDataBase.GetPrefab(equippedData.prefab)) as GameObject; UniqueId uuid = clone.GetComponent <UniqueId>(); uuid.uniqueId = equippedData.uuid; _Item item = clone.GetComponent <_Item>(); inventory.MoveToEquipped(item); item.OnPickup(); } }