using UnityEngine;
using UnityEngine.UI;
public class InventoryUI : MonoBehaviour
{
public Inventory inventory;
public GameObject inventoryPanel;
public GameObject inventorySlotPrefab;
void Start()
{
RefreshInventoryUI();
}
public void RefreshInventoryUI()
{
// Clear existing UI elements
foreach (Transform child in inventoryPanel.transform)
{
Destroy(child.gameObject);
}
// Create new UI elements
foreach (Item item in inventory.items)
{
GameObject slot = Instantiate(inventorySlotPrefab, inventoryPanel.transform);
Image iconImage = slot.transform.GetChild(0).GetComponent<Image>();
iconImage.sprite = item.icon;
// Add more UI logic as needed (like item count for stackable items)
}
}
}
- Data Management: Scriptable objects allow you to manage item data independently from game logic, making it easier to update and maintain.
- Reusability: You can create item templates and reuse them across different scenes and projects.
- Performance: Scriptable objects reduce memory overhead compared to prefab-based systems since they are shared across instances.