背包系统优化
上一次发的背包其实不能算面向对象。只是一种面向过程的解决了背包的基本需求,这次更新面向对象该怎么实现背包。
多的就不说了,实现的效果是一样的,说一下脚本。
首先抽取一个抽象类BagItem,如下:
using UnityEngine;
//装备种类
public enum EquipType
{
//无类型
None,
//武器
Weapon,
//防具
Armor,
//鞋子
shoe
}
public abstract class BagItem : MonoBehaviour {
public EquipType type;
//背包格子接收方法
public abstract void Receive(Equipment equip);
}
然后,装备格子和背包格子用同一个脚本继承此抽象类,如下:
using UnityEngine;
public class BoxItem : BagItem
{
//用于判断是否为物品交换位置操作
public bool isExchange = false;
//重写方法
public override void Receive(Equipment equip)
{
//如果是空的普通格子
if (type == EquipType.None && (isExchange || transform.childCount == 0))
{
//放入格子
SingleTon.GetInstance().SetEquipToBox(equip.transform, transform)