It does not work removing items from the inventory
I tried to do inventory on the video
https://www.youtube.com/watch?v=Y-OpWcRhgJ0
Almost all the works except the removal of items from the inventory.
When finished writing all of the code tried to run everything worked, only I did not have the correct path to the scope of prefabs, after correcting things ceased to be ejected, I have repeatedly rechecked code overwrites all over again - but the problem persists.
My code:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
public class Inventory: MonoBehaviour {
List <Item> list;
public GameObject inventory;
public GameObject container;
// Use this for initialization
void Start () {
list = new List <Item> ();
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonUp (1))
{
Ray ray = new Ray (transform.position, transform.forward);
RaycastHit hit;
if (Physics.Raycast (ray, out hit, 5.0F))
{
Item item = hit.collider.GetComponent <Item> ();
if (item! = null)
{
list.Add (item);
Destroy (hit.collider.gameObject);
}
}
}
if (Input.GetKeyUp (KeyCode.I))
{
if (inventory.activeSelf)
{
inventory.SetActive (false);
for (int i = 0; i <inventory.transform.childCount; i ++) {
if (inventory.transform.GetChild (i) .transform.childCount> 0)
{
Destroy (inventory.transform.GetChild (i) .transform.GetChild (0) .gameObject);
}
}
}
else
{
inventory.SetActive (true);
int count = list.Count;
for (int i = 0; i <count; i ++) {
Item it = list [i];
if (inventory.transform.childCount> = i)
{
GameObject img = Instantiate (container);
img.transform.SetParent (inventory.transform.GetChild (i) .transform);
img.GetComponent <Image> (). sprite = Resources.Load <Sprite> (it.sprite);
img.AddComponent <Button> (). onClick.AddListener (() => remove (it, img));
}
else break;
}
}
}
}
void remove (Item it, GameObject obj)
{
GameObject newo = Instantiate <GameObject> (Resources.Load <GameObject> (it.prefab));
newo.transform.position = transform.position + transform.forward + transform.up;
Destroy (obj);
list.Remove (it);
}
}
Settings main script
Script parameters on which the cube
Script parameters that on the sphere
Your answer
Follow this Question
Related Questions
Editing animation curves in a script 2 Answers
Having trouble deleting objects from a list after they reach a certain scale. 0 Answers
How To refer to other Object's Components ? 0 Answers
How attach C# script by argument? 3 Answers
What is the most effective way to structure Card Effects in a Single Player game? 1 Answer