Basic inventory system

This commit is contained in:
darrelmarek 2018-04-19 13:45:53 -05:00
parent 0bedb71a40
commit 770c4f751b
8 changed files with 132 additions and 0 deletions

Binary file not shown.

View file

@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: ffb3a2b5c7f8d144f83ef1f1166b178f
timeCreated: 1524162403
licenseType: Free
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 100100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,37 @@
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Inventory : MonoBehaviour
{
public Image[] itemImages = new Image[numItemSlots];
public Item[] items = new Item[numItemSlots];
public const int numItemSlots = 4;
public void AddItem(Item itemToAdd)
{
for (int i = 0; i < items.Length; i++)
{
if (items[i] == null)
{
items[i] = itemToAdd;
itemImages[i].sprite = itemToAdd.sprite;
itemImages[i].enabled = true;
return;
}
}
}
public void RemoveItem (Item itemToRemove)
{
for (int i = 0; i < items.Length; i++)
{
if (items[i] == itemToRemove)
{
items[i] = null;
itemImages[i].sprite = null;
itemImages[i].enabled = false;
return;
}
}
}
}

View file

@ -0,0 +1,13 @@
fileFormatVersion: 2
guid: b43850ea4963ca144a2219ebc0e3b6fd
timeCreated: 1524161696
licenseType: Free
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,39 @@
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(Inventory))]
public class InventoryEditor : Editor
{
private bool[] showItemSlots = new bool[Inventory.numItemSlots];
private SerializedProperty itemImagesProperty;
private SerializedProperty itemsProperty;
private const string inventoryPropItemImagesName = "itemImages";
private const string inventoryPropItemsName = "items";
private void OnEnable ()
{
itemImagesProperty = serializedObject.FindProperty (inventoryPropItemImagesName);
itemsProperty = serializedObject.FindProperty (inventoryPropItemsName);
}
public override void OnInspectorGUI ()
{
serializedObject.Update ();
for (int i = 0; i < Inventory.numItemSlots; i++)
{
ItemSlotGUI (i);
}
serializedObject.ApplyModifiedProperties ();
}
private void ItemSlotGUI (int index)
{
EditorGUILayout.BeginVertical (GUI.skin.box);
EditorGUI.indentLevel++;
showItemSlots[index] = EditorGUILayout.Foldout (showItemSlots[index], "Item slot " + index);
if (showItemSlots[index])
{
EditorGUILayout.PropertyField (itemImagesProperty.GetArrayElementAtIndex (index));
EditorGUILayout.PropertyField (itemsProperty.GetArrayElementAtIndex (index));
}
EditorGUI.indentLevel--;
EditorGUILayout.EndVertical ();
}
}

View file

@ -0,0 +1,13 @@
fileFormatVersion: 2
guid: dd2ab8002901b644bbc724fa04249955
timeCreated: 1524163165
licenseType: Free
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,7 @@
using UnityEngine;
[CreateAssetMenu]
public class Item : ScriptableObject {
public Sprite sprite;
}

View file

@ -0,0 +1,13 @@
fileFormatVersion: 2
guid: 2b57d2e6ebe4089498537815ff9350ee
timeCreated: 1524162707
licenseType: Free
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: