RPG游戏《黑暗之光》流程介绍与代码分析之(八):装备系统的实现

第八章 装备系统

装备系统是提升角色属性的重要系统,本篇博客重点实现装备系统UI的设计以及装备栏与物品栏的交互。

8.1 基础界面的设计

导入装备UI的模型,命名为Equipment,并添加5个方框,用以放置装备,如下图

当点击功能面板的装备按钮时,显示动画(方法见 https://blog.csdn.net/s1314_JHC/article/details/79690742 下的5.5节),不赘述。
我们在每个格子中再创建一个Child Sprite,当实例化时直接给这个Child Sprite添加装备图标即可。拖放到Prefab之中,方便之后使用

在Equipment脚本中管理这6个格子
    private GameObject headgear;    //创建GameObject并赋值
    void Awake()
    {
       headgear = transform.Find ("Headgear").gameObject;
        armor = transform.Find ("Armor").gameObject;
        left_hand = transform.Find ("Left_hand").gameObject;
        right_hand = transform.Find ("Right_hand").gameObject;
        shoe = transform.Find ("Shoe").gameObject;
        accessory = transform.Find ("Accessory").gameObject;
    }

8.2 装备信息的添加与管理

这节我们实现装备信息的添加以及模拟拾取功能,与药品信息类似,我们创建装备信息的格式如下。

内容依旧添加在之前的文档ObjectsInfoInList之中,创建示例如下所示。
2001,simpleHeltForMagician,icon-helm-03,Equip,0,10,0,Headgear,Magician,60,150
2002,fineHeltForMagician,icon-helm-02,Equip,0,20,0,Headgear,Magician,80,200
2003,brokenArmorForMagician,armor3-icon,Equip,0,30,0,Armor,Magician,60,150
2004,fineArmorForMagician,armor2-icon,Equip,0,50,0,Armor,Magician,80,200
2005,brokenShield,icon-shield,Equip,0,30,0,Left_hand,Common,80,200
2006,fineShield,icon-shield1,Equip,0,50,0,Left_hand,Common,100,250
2007,brokenRod,rod-icon,Equip,30,0,0,Right_hand,Magician,60,150
2008,fineRod,rod-icon02,Equip,30,0,0,Right_hand,Magician,80,200
2009,brokenShoe,icon-boot0,Equip,0,0,30,Shoe,Common,60,150
2010,fineShoe,icon-boot0-01,Equip,0,0,50,Shoe,Common,80,200
2011,brokenRing,icon-ring-01,Equip,0,30,0,Accessory,Common,60,150
2012,fineRing,icon-ring,Equip,0,50,0,Accessory,Common,80,200
在ObjectsInfo之中,我们在public class ObjectInfo添加几个适用于装备的成员变量
    public class ObjectInfo{
        public int attack;    //攻击
        public int defense;    //防御
        public int speed;    //速度
        public ApplicationType appType;    //武器适用角色
        public DressType dressType;    //穿戴部位
    }
其中ApplicationType和DressType单独定义为枚举类型,即
    public enum ApplicationType{
        Swordman,
        Magician,
        Common
    }

    public enum DressType{
        Headgear,
        Armor,
        Left_hand,
        Right_hand,
        Shoe,
        Accessory
    }
在从ObjectsInfoInList.txt文档中读取数据到字典objectInfoDict的时候,之前在药品信息系统中所采用的判断语句if(type == ObjectType.Drug),对其进行修改,即可添加装备信息
else if(type == ObjectType.Equip)
            {
                info.attack = int.Parse(proArray[4]);
                info.defens
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值