using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using static UnityEditor.Progress;
public class Inventory : MonoBehaviour
{
#region Singleton
private static Inventory instance;
public static Inventory Instance
{
get
{
if (instance == null)
{
Inventory prefab = Resources.Load<Inventory>("Inventory");
Instantiate(prefab);
}
return instance;
}
}
private void Awake()
{
if (instance == null)
{
instance = this;
}
else
{
Destroy(gameObject);
}
}
#endregion
#region Item
public List<Item> items = new List<Item>();
public void AddItem(Item item)
{
items.Add(item);
item.gameObject.SetActive(false);
item.transform.parent = transform;
}
public void UseItem(Item item)
{
item.Use();
RemoveItem(item);
}
public void UseItem(int index)
{
Item item = items[index];
items.RemoveAt(index);
item.Use();
Destroy(item.gameObject);
}
public void DropItem(Item item)
{
items.Remove(item);
item.gameObject.SetActive(true);
item.transform.parent = null;
}
public void DropItem(int index)
{
Item item = items[index];
items.RemoveAt(index);
item.gameObject.SetActive(true);
item.transform.parent = null;
}
public void RemoveItem(Item item)
{
items.Remove(item);
}
#endregion
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public abstract class Item : MonoBehaviour
{
public string itemName;
public string itemDescription;
public abstract void Use();
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Potion : Item
{
Player player;
private float rotSpeed = 100f;
public Potion()
{
itemName = "힐링 포션";
itemDescription = "소량의 체력을 회복하는 아이템";
}
public override void Use()
{
Debug.Log("포션 사용 체력 30 회복");
player.Heal(30);
}
private void OnCollisionEnter(Collision collision)
{
if(collision.gameObject.CompareTag("Player"))
{
player = collision.gameObject.GetComponent<Player>();
Inventory inventory = collision.gameObject.GetComponentInChildren<Inventory>();
inventory.AddItem(this);
Use();
}
}
void Update()
{
Rotate();
}
private void Rotate()
{
transform.Rotate(Vector3.up, rotSpeed * Time.deltaTime);
}
}