Я создал систему инвентаризации с использованием сценариев Unity и C #, я следовал учебному пособию Крызареля на Youtube, чтобы создать систему инвентаризации. Я не могу щелкнуть пункты в сборке. Я попытался перепроверить код с помощью кода Крызареля, и я не смог найти, что происходит не так. Ниже приведены классы, для которых назначены события.
`
using UnityEngine;
using UnityEngine.UI;
using CharacterStats;
public class Character : MonoBehaviour
{
public CharacterStat Strength;
public CharacterStat Agility;
public CharacterStat Intelligence;
public CharacterStat Defence;
public CharacterStat Damage;
[SerializeField] Inventory inventory;
[SerializeField] EquipmentPanel equipmentPanel;
[SerializeField] StatPanel statPanel;
[SerializeField] Image draggableItem;
private ItemSlot draggedSlot;
private void Awake()
{
statPanel.SetStats(Strength, Agility, Intelligence, Defence,Damage);
statPanel.UpdateStatValues();
inventory.OnRightClickEvent += Equip;
equipmentPanel.OnRightClickEvent += Unequip;
inventory.OnBeginDragEvent += BeginDrag;
equipmentPanel.OnBeginDragEvent += BeginDrag;
inventory.OnEndDragEvent += EndDrag;
equipmentPanel.OnEndDragEvent += EndDrag;
inventory.OnDragEvent += Drag;
equipmentPanel.OnDragEvent += Drag;
inventory.OnDropEvent += Drop;
equipmentPanel.OnDropEvent += Drop;
}
}`
`
public class Inventory : MonoBehaviour
{
[SerializeField] List<Item> startingItems;
[SerializeField] Transform itemsParent;
[SerializeField] ItemSlot[] itemSlots;
public event Action<ItemSlot> OnRightClickEvent;
public event Action<ItemSlot> OnPointerEnterEvent;
public event Action<ItemSlot> OnPointerExitEvent;
public event Action<ItemSlot> OnBeginDragEvent;
public event Action<ItemSlot> OnEndDragEvent;
public event Action<ItemSlot> OnDragEvent;
public event Action<ItemSlot> OnDropEvent;
private void Start()
{
for(int i=0; i < itemSlots.Length; i++)
{
itemSlots[i].OnRightClickEvent += OnRightClickEvent;
itemSlots[i].OnPointerEnterEvent += OnPointerEnterEvent;
itemSlots[i].OnPointerExitEvent += OnPointerExitEvent;
itemSlots[i].OnBeginDragEvent += OnBeginDragEvent;
itemSlots[i].OnEndDragEvent += OnEndDragEvent;
itemSlots[i].OnDragEvent += OnDragEvent;
itemSlots[i].OnDropEvent += OnDropEvent;
}
SetStartingItems();
}`
`
public class EquipmentPanel : MonoBehaviour
{
[SerializeField] Transform equipmentSlotsParent;
[SerializeField] EquipmentSlot[] equipmentSlots;
public event Action<ItemSlot> OnRightClickEvent;
public event Action<ItemSlot> OnPointerEnterEvent;
public event Action<ItemSlot> OnPointerExitEvent;
public event Action<ItemSlot> OnBeginDragEvent;
public event Action<ItemSlot> OnEndDragEvent;
public event Action<ItemSlot> OnDragEvent;
public event Action<ItemSlot> OnDropEvent;
public void Start()
{
for (int i = 0; i < equipmentSlots.Length; i++)
{
equipmentSlots[i].OnRightClickEvent += OnRightClickEvent;
equipmentSlots[i].OnPointerEnterEvent += OnPointerEnterEvent;
equipmentSlots[i].OnPointerExitEvent += OnPointerExitEvent;
equipmentSlots[i].OnBeginDragEvent += OnBeginDragEvent;
equipmentSlots[i].OnEndDragEvent += OnEndDragEvent;
equipmentSlots[i].OnDragEvent += OnDragEvent;
equipmentSlots[i].OnDropEvent += OnDropEvent;
}
}
`