一、开发操作
1、修改Slat_Bag按钮的预制件(Prefabs)
1)、修改Button组件的Navigation改为None
2)、将配色方案:Disabled Color的透明度改为255
二、脚本编程
1、Slot UI.cs文件
using UnityEngine;
using UnityEngine.UI;
using TMPro;
namespace MFarm.Iventory
{
public class SlotUI : MonoBehaviour
{
[Header("组件的获取")]
[SerializeField] private Image slotImage;
[SerializeField] private TextMeshProUGUI amountText;
[SerializeField] private Image slotHightlight;
[SerializeField] private Button button;
[Header("格子类型")]
public SlotType slotType;
public bool isSelected;
//物品信息
public ItemDetails itemDetails;
public int itemAmount;
private void Start()
{
isSelected = false;
if (itemDetails.itemID == 0)
{
UpdateEmptySlot();
}
}
public void UpdataSlot(ItemDetails item, int amount)
{
itemDetails = item;
slotImage.sprite = item.itemIcon;
itemAmount = amount;
amountText.text = amount.ToString();
button.interactable = true;
}
public void UpdateEmptySlot()
{
if (isSelected)
{
isSelected = false;
}
slotImage.enabled = false;
amountText.text = string.Empty;
button.interactable = false;
}
}
}
这段代码定义了一个SlotUI类,其中包含了一些用于显示物品格子的UI组件(Image、TextMeshProUGUI、Button等),以及管理物品格子相关状态的变量(isSelected、itemDetails、itemAmount等)。根据注释,该类的功能包括:
- 在Start方法中,如果物品ID为0,则更新为空的格子状态。
- 在UpdataSlot方法中,更新物品格子的信息,包括物品细节、数量、图标等。
- 在UpdateEmptySlot方法中,更新为空的格子状态,包括禁用图标、清空数量和禁用按钮等。
可以看出,该类主要负责管理物品格子的UI显示和状态,将物品详细信息、数量等保存在变量中,并提供了一些方法来更新这些信息。如果有需要,可以在该类基础上扩展出更多的功能,如添加点击事件等。 2、Enums.cs文件
格子类型
public enum SlotType
{
Bag,Box,Shop
}
这段代码定义了一个枚举类型SlotType,包含了三个枚举值:Bag、Box、Shop。该枚举类型可以用于标识物品格子的类型,方便在不同情况下进行区分和处理。例如,在角色背包中显示的物品格子类型为Bag,在商店界面中显示的物品格子类型为Shop等。可以通过在SlotUI类中添加一个slotType变量,并在创建物品格子时指定其类型来实现这一功能。