コード例 #1
0
ファイル: CharacterPanel.cs プロジェクト: CunZhangYY/Knapsack
 public void PutOn(ItemUI item)
 {
     foreach (EquipmentSlot temp in slotList)
     {
         if (item.item is Equipment)
         {//当点击的物品是装备时,
          //目的槽上已经有物品了,此时执行交换
          //如果槽上没有物品时,此时直接将选中物品放到槽上
             if (temp.equipType == ((Equipment)(item.item)).equipType)
             {     //判断物品的类型与槽的类型相同
                 if (temp.transform.childCount > 0)
                 { //此时执行交换操作,
                     if (item.amount == 1)
                     {
                         if (temp.transform.GetChild(0).GetComponent <ItemUI>().item is Weapon)
                         {                      //判断槽上的物品是属于武器还是装备 ,是武器才可以交换,是装备不可以交换
                             UpgradeText(item); //更新交换的物品的显示信息
                             item.ExchangeItem(temp.transform.GetChild(0).GetComponent <ItemUI>());
                         }
                     }
                     else
                     {
                         //此时就说明背包槽上的物品多于一个,此时要判断当角色面板槽上的物品是属于什么类型
                         //属于装备类型,就不进行交换操作
                         //属于武器类型,就进行交换操作,交换时只需要先将背包上的物品数量减一,再将从角色面板传过来的武器放到背包上
                         if (temp.transform.GetChild(0).GetComponent <ItemUI>().item is Weapon)
                         {
                             UpgradeText(item);                                                                    //更新交换的物品的显示信息
                             item.RemoveAmount();                                                                  //将背包上的数量减1
                             Knapsack.Instance.StoreItem(temp.transform.GetChild(0).GetComponent <ItemUI>().item); //调用背包上的创建新物品的方法,将角色面板上的物品放上去
                             temp.transform.GetChild(0).GetComponent <ItemUI>().SetItem(item.item, 1);             //将背包上的选中的物品放到角色面板上
                         }
                     }
                 }
                 else
                 {                              //说明角色面板的槽上空的
                  //此时直接将物品放到槽上
                     UpgradeText(item);         //更新交换的物品的显示信息
                     temp.StoreItem(item.item); //直接调用该槽上的创建物品的方法
                     item.RemoveAmount();       //减少自身的数量
                     if (item.amount <= 0)
                     {
                         Destroy(item.gameObject);
                         InventoryManager.Instance.HideToolTip();
                     }
                 }
             }
         }
         else
         {//当点击的物品是武器时,
             //目的槽上已经有物品了,此时执行交换
             //如果槽上没有物品时,此时直接将选中物品放到槽上
             if (temp.weaponType == ((Weapon)(item.item)).weaponType)
             {     //判断物品的类型与槽的类型相同
                 if (temp.transform.childCount > 0)
                 { //此时执行交换操作,
                     if (item.amount == 1)
                     {
                         if (temp.transform.GetChild(0).GetComponent <ItemUI>().item is Equipment)
                         {                      //判断槽上的物品是属于武器还是装备 ,是武器才可以交换,是装备不可以交换
                             UpgradeText(item); //更新交换的物品的显示信息
                             item.ExchangeItem(temp.transform.GetChild(0).GetComponent <ItemUI>());
                         }
                     }
                     else
                     {
                         //此时就说明背包槽上的物品多于一个,此时要判断当角色面板槽上的物品是属于什么类型
                         //属于装备类型,就不进行交换操作
                         //属于武器类型,就进行交换操作,交换时只需要先将背包上的物品数量减一,再将从角色面板传过来的武器放到背包上
                         if (temp.transform.GetChild(0).GetComponent <ItemUI>().item is Equipment)
                         {
                             UpgradeText(item);                                                                    //更新交换的物品的显示信息
                             item.RemoveAmount();                                                                  //将背包上的数量减1
                             Knapsack.Instance.StoreItem(temp.transform.GetChild(0).GetComponent <ItemUI>().item); //调用背包上的创建新物品的方法,将角色面板上的物品放上去
                             temp.transform.GetChild(0).GetComponent <ItemUI>().SetItem(item.item, 1);             //将背包上的选中的物品放到角色面板上
                         }
                     }
                 }
                 else
                 {                              //说明角色面板的槽上空的
                  //此时直接将物品放到槽上
                     UpgradeText(item);         //更新交换的物品的显示信息
                     temp.StoreItem(item.item); //直接调用该槽上的创建物品的方法
                     item.RemoveAmount();       //减少自身的数量
                     if (item.amount <= 0)
                     {
                         Destroy(item.gameObject);
                         InventoryManager.Instance.HideToolTip();
                     }
                 }
             }
         }
     }
 }
コード例 #2
0
    public Weapon.WeaponType weaponType;  //设置一个槽上可存储的武器类型
                                          // Use this for initialization

    public override void OnPointerDown(PointerEventData eventData)
    {
        if (eventData.button == PointerEventData.InputButton.Right)
        {     //如果点击了鼠标右键 则执行脱下操作
            if (transform.childCount > 0 && InventoryManager.Instance.IspickedItem == false)
            { //大于0 说明物品槽上有物品
                ItemUI currentItem = transform.GetChild(0).GetComponent <ItemUI>();
                if (currentItem.item is Equipment || currentItem.item is Weapon)
                {
                    transform.parent.parent.SendMessage("PutOff", currentItem);//给父类发送一个信息
                    InventoryManager.Instance.HideToolTip();
                    Destroy(currentItem.gameObject);
                    CharacterPanel.Instance.UpgradeText();//更新交换的物品的显示信息
                }
            }
        }


        if (eventData.button != PointerEventData.InputButton.Left)
        {
            return;
        }
        if (InventoryManager.Instance.IspickedItem == true)
        {//鼠标上有物品的情况
            ItemUI currentPickedItem = InventoryManager.Instance.PickedItem;
            if (transform.childCount > 0)
            {                                                                       //槽上有物品时
                if (currentPickedItem.item is Equipment)
                {                                                                   //判断鼠标上的物品是否是属于装备类型的
                    if (((Equipment)(currentPickedItem.item)).equipType == equipType)
                    {                                                               //鼠标上的物品若属于装备类型,那么将其强制类型转换为装备类型,并判断,其装备的物品类型是否属于跟该物品槽相同
                        if (currentPickedItem.amount == 1)
                        {                                                           //我要求他只能在鼠标上的物品只有一个时才允许被交换,若果多于一个那么就不允许交换
                            CharacterPanel.Instance.UpgradeText(currentPickedItem); //更新交换的物品的显示信息
                            currentPickedItem.ExchangeItem(transform.GetChild(0).GetComponent <ItemUI>());
                        }
                    }
                }
                else
                {
                    if (currentPickedItem.item is Weapon)
                    {     //判断鼠标上的物品是否是武器类型
                        if (((Weapon)(currentPickedItem.item)).weaponType == weaponType)
                        { //鼠标上的物品若属于装备类型,那么将其强制类型转换为装备类型,并判断,其装备的物品类型是否属于跟该物品槽相同
                            if (currentPickedItem.amount == 1)
                            {
                                CharacterPanel.Instance.UpgradeText(currentPickedItem);//更新交换的物品的显示信息
                                currentPickedItem.ExchangeItem(transform.GetChild(0).GetComponent <ItemUI>());
                            }
                        }
                    }
                }
            }
            else
            {                                                                   //选中槽上没有物品时,直接把鼠标上的物品放到槽上即可
                if (currentPickedItem.item is Equipment)
                {                                                               //判断鼠标上的物品是否是属于装备类型的
                    if (((Equipment)(currentPickedItem.item)).equipType == equipType)
                    {                                                           //鼠标上的物品若属于装备类型,那么将其强制类型转换为装备类型,并判断,其装备的物品类型是否属于跟该物品槽相同
                        this.StoreItem(currentPickedItem.item);
                        currentPickedItem.RemoveAmount();                       //减少一个物品
                        CharacterPanel.Instance.UpgradeText(currentPickedItem); //更新交换的物品的显示信息
                        if (currentPickedItem.amount <= 0)
                        {
                            InventoryManager.Instance.HidePicked();
                            InventoryManager.Instance.IspickedItem = false;
                        }
                    }
                }
                else
                {
                    if (currentPickedItem.item is Weapon)
                    {                                                               //判断鼠标上的物品是否是武器类型
                        if (((Weapon)(currentPickedItem.item)).weaponType == weaponType)
                        {                                                           //鼠标上的物品若属于装备类型,那么将其强制类型转换为装备类型,并判断,其装备的物品类型是否属于跟该物品槽相同
                            this.StoreItem(currentPickedItem.item);
                            currentPickedItem.RemoveAmount();                       //减少一个物品
                            CharacterPanel.Instance.UpgradeText(currentPickedItem); //更新交换的物品的显示信息
                            if (currentPickedItem.amount <= 0)
                            {
                                InventoryManager.Instance.HidePicked();
                                InventoryManager.Instance.IspickedItem = false;
                            }
                        }
                    }
                }
            }
        }
        else
        {
            if (transform.childCount > 0)
            {
                InventoryManager.Instance.SetPickedItem(transform.GetChild(0).GetComponent <ItemUI>().item, transform.GetChild(0).GetComponent <ItemUI>().amount);
                CharacterPanel.Instance.UpgradeText();//更新交换的物品的显示信息
                Destroy(transform.GetChild(0).gameObject);
            }
        }
    }