内容纲要

1.在BagMgr中写入添加物品的方法

0.写一个新的list OverBagItems,初始化该List

for (int i=0;i<BagSize;i++)//初始化背包原始数据槽位,为null;
        {
            OverbagItems.Add(null);
        }

1.该方法的内容

 for (int a=0;a<BagSize;a++)
        {
            if (OverbagItems[a]==null)
            {

                var bagItemss = new BagItem(ID,TypeID,a,1);//四个参数
                OverbagItems[a] = bagItemss;
                bagItems[bagItemss.ID] = bagItemss;
                Root.BroadcastMessage("OnbagAddItem", bagItems[bagItemss.ID]);
                ID++;
                return;
            }
        }

1.5.字典和新写的数组进行同步//

foreach (var kv in  bagItems)
        {
            OverbagItems[kv.Value.SloatIndex] = kv.Value;//将缓存,传递给源数据;
        } 

2.在BagPanle写入以下方法

 BagItem bI=(BagItem)isItemData;

            // Debug.Log(a);

           Transform FatherPrPosition = transformContent.GetChild(bI.SloatIndex);//选择生成子节点的位置;
            GameObject ItPosition = GameObject.Instantiate(ItemPerfab);//生成预制体;
            ItPosition.transform.localPosition = Vector2.one;
            ItPosition.transform.SetParent(FatherPrPosition,false);//生成在指定父节点位置下面,第二个参数为是否使用世界坐标;
            ItPosition.GetComponent<Toggle>().group = ToogleTransform.GetComponent<ToggleGroup>();//寻找ToggleGroup组件
            ItPosition.GetComponent<ItemView>().Id = bI.ItemID;//物品类型Id传入显示界面;
            ItPosition.GetComponent<ItemView>().ID = bI.ID;
            ItPosition.GetComponent<ItemView>().Show();//要改成发送消息; 

3.在写一个按钮方法调用添加方法的方法,就可以实现添加方法了

一.删除物品

1.删除物品方法 在bagPanle

public void DeleatePanlItem()
    {
       IEnumerable<Toggle> toggle = GetComponent<ToggleGroup>().ActiveToggles();//调用togglegroup组件子物体中带有toggle组件的对象;
        foreach (Toggle t in toggle)
        {
            if (t.isOn==true)//属性是否为ison;        
            {
                t.isOn = false;
                BagMgr.instance.DetaItem(t.GetComponent<ItemView>().ID);//获取id,传入修改数据;
                break;
            }
        }
    }

2.删除背包界面

 void OnBagItemDeleate(int a)//删除背包界面信息;
    {
      Destroy ( transformContent.GetChild(a).GetChild(0).gameObject);//
    }

3.在BagMagr中加入,并写一个调用方法。

     public void DetaItem(int a)
    {
       Root.BroadcastMessage("OnBagItemDeleate",bagItems[a].SloatIndex);
        OverbagItems[bagItems[a].SloatIndex] = null;
        bagItems.Remove(a);//
        return;
    }

发表评论