system
1
I need help whit create a inventory can anyone help me?
Alright, I've got 20 minutes to kill...
public class Inventory
{
List<InventoryItem> items = new List<InventoryItem>();
InventoryItem selectedItem;
Player owner;
int currentlySelected = 0;
public void Init(Player newPlayer)
{
newPlayer = owner;
}
public bool AddItem(InventoryItem newItem)
{
if(owner.strength >= GetTotalMass() + newItem.mass)
{
items.Add(newItem);
return true;
} else {
return false;
}
}
public void DropItem(InventoryItem newItem)
{
items.Remove(newItem);
}
public float GetTotalMass()
{
float mass = 0;
foreach(InventoryItem it in items)
{
mass += it.mass;
}
return mass;
}
public InventoryItem DrawItemsGrid(int columns)
{
Texture2D[] textures = GetTextures();
currentlySelected = GUILayout.SelectionGrid(currentlySelected, textures, columns);
return items[currentlySelected];
}
public Texture2D[] GetTextures()
{
List<Texture2D> textures = new List<Texture2D>();
foreach(InventoryItem it in items)
{
textures.Add(it.icon);
}
return textures.ToArray();
}
}
public class Player : MonoBehaviour
{
public float strength;
public Inventory invent;
public Hat myHat;
public Sword mySword;
public Sword myOtherSword;
void Start()
{
invent.Init(this);
invent.Add(myHat);
invent.Add(mySword);
invent.Add(myOtherSword);
}
public void TipHat()
{
//play a hat-tipping animation!
}
public void Attack()
{
// swing a sword
}
void OnGUI()
{
InventoryItem currentItem = invent.DrawItemsGrid(2);
currentItem.DrawGUIInfo();
if(GUILayout.Button("Activate " + currentItem.itemName))
{
currentItem.Activate(this);
}
if(GUILayout.Button("Drop " + currentItem.itemName))
{
invent.DropItem(currentItem);
}
}
}
public abstract class InventoryItem
{
public string itemName;
public string dragInfo;
public float mass;
public Texture2D icon;
public abstract void Activate(Player player);
public void DrawGUIInfo(){ GUILayout.Label(dragInfo); }
}
[System.Serializable]
public class Hat : InventoryItem
{
void Activate(Player player)
{
player.TipHat();
}
}
[System.Serializable]
public class Sword : InventoryItem
{
void Activate(Player player)
{
player.Attack();
}
}
That's a start. I'm not offering any guarantees, since I'm pulling this out of thin air here. Give it a shot!