コード例 #1
0
    protected override void OnDragDropRelease(GameObject surface)       //每次UI拖拽结束后都会调用这个函数,surface表示拖拽后鼠标下的物体
    {
        base.OnDragDropRelease(surface);
        if (surface != null)                                            //鼠标下物体不为空,先判断下鼠标下的物体时什么
        {
            if (surface.tag == Tags.bag_item_grid)                      //拖放到空的格子里面

            {
                if (surface == this.transform.parent.gameObject)                        //拖放到自己的格子里,位置归零

                {
                }
                else                                                                            //拖放到一个空的格子里
                {
                    BagItemGrid oldparent = this.transform.parent.GetComponent <BagItemGrid>(); //取得原有格子的信息
                    this.transform.parent = surface.transform;                                  //将其父亲更改为新的空格子
                    ResetPosition();
                    BagItemGrid newparent = surface.GetComponent <BagItemGrid>();               //取得新的空格子
                    newparent.SetId(oldparent.id, oldparent.num);                               //将信息存放到新的格子里
                    oldparent.CleanrInfo();                                                     //清除原来格子的信息
                }
            }
            else if (surface.tag == Tags.bag_item)                                                              //拖放到有物体个格子里
            {
                BagItemGrid Grid1 = this.transform.parent.GetComponent <BagItemGrid>();                         //取得现在格子的信息
                BagItemGrid Grid2 = surface.transform.parent.GetComponent <BagItemGrid>();                      //取得拖放到格子的信息
                int         id    = Grid1.id;                                                                   //保存原有格子的信息
                int         num   = Grid1.num;
                Grid1.SetId(Grid2.id, Grid2.num);                                                               //交换两个格子的信息
                Grid2.SetId(id, num);
            }
        }

        ResetPosition();
    }
コード例 #2
0
ファイル: Bag.cs プロジェクト: Ldrumstick/RPG-darklight
    /// <summary>
    /// 拖拽结束后的处理
    /// </summary>
    /// <param name="oldTransform">被拖拽物品原所在的格子</param>
    /// <param name="enterTransform">被拖拽物品现所在的格子</param>
    private void BagItemGrid_OnLeftEndDrag(Transform oldTransform, Transform enterTransform)
    {
        if (isDrag == true)
        {
            isDrag = false;

            dragItem.Hide();
            if (enterTransform == null)  //将物品扔出背包
            {
                Destroy(oldTransform.GetChild(1).gameObject);
                BagItemGrid bagItemGrid = oldTransform.gameObject.GetComponent <BagItemGrid>();
                bagItemGrid.Clear();
            }
            else if (enterTransform.tag == Tags.grid)
            {
                BagItemGrid bagItemGrid = oldTransform.gameObject.GetComponent <BagItemGrid>();
                BagItemGrid enterGrid   = enterTransform.gameObject.GetComponent <BagItemGrid>();
                if (enterTransform.childCount == 1) //将物品拖到一个新的地方
                {
                    GameObject itemGo = Instantiate(bagItem, enterTransform);
                    itemGo.transform.localPosition = Vector3.zero;
                    enterGrid.SetByID(bagItemGrid.id, bagItemGrid.count);
                    Destroy(oldTransform.GetChild(1).gameObject);
                    bagItemGrid.Clear();
                }
                else //物品位置交换
                {
                    int oldID    = bagItemGrid.id;
                    int oldCount = bagItemGrid.count;
                    oldTransform.GetChild(1).gameObject.GetComponent <Image>().enabled = true;
                    bagItemGrid.SetByID(enterGrid.id, enterGrid.count);

                    enterGrid.SetByID(oldID, oldCount);
                }
            }
            else if (enterTransform.tag == Tags.shotCutGrid)
            {
                ShotCutGrid shotCutGrid = enterTransform.GetComponent <ShotCutGrid>();
                BagItemGrid bagItemGrid = oldTransform.GetComponent <BagItemGrid>();
                if (bagItemGrid.info.type == objectType.Drug)
                {
                    shotCutGrid.id = bagItemGrid.id;
                    oldTransform.GetChild(1).gameObject.GetComponent <Image>().enabled = true;
                    Image      image = shotCutGrid.transform.FindChild("Image").GetComponent <Image>();
                    ObjectInfo info  = ObjectsInfo._instance.GetObjectInfoById(shotCutGrid.id);
                    image.gameObject.SetActive(true);
                    string path = "Icon/" + info.name_Icon;
                    image.sprite = Resources.Load(path, typeof(Sprite)) as Sprite;
                }
            }
            else //拖到了背包的其他地方,位置复原
            {
                oldTransform.GetChild(1).gameObject.GetComponent <Image>().enabled = true;
            }
        }
    }
コード例 #3
0
ファイル: Bag.cs プロジェクト: Ldrumstick/RPG-darklight
    /// <summary>
    /// 鼠标进入显示物品详情
    /// </summary>
    /// <param name="gridTransform"></param>
    private void BagItemGrid_OnEnter(Transform gridTransform)
    {
        BagItemGrid bagItemGrid = gridTransform.gameObject.GetComponent <BagItemGrid>();
        ObjectInfo  info        = bagItemGrid.info;

        if (info == null)
        {
            return;
        }
        dressGrid = bagItemGrid;
        itemDecUI.ShowDec();
        string text = GetDecText(info);

        itemDecUI.UpdateText(text);
        showingDec = true;
    }
コード例 #4
0
ファイル: Bag.cs プロジェクト: Ldrumstick/RPG-darklight
    /// <summary>
    /// 拖拽物品开始时的处理
    /// </summary>
    /// <param name="gridTransform">被拖拽物所在的格子</param>
    private void BagItemGrid_OnLeftBeginDrag(Transform gridTransform)
    {
        if (gridTransform.childCount == 1)
        {
            return;
        }
        else
        {
            dragItem.Show();
            BagItemGrid bagItemGrid = gridTransform.gameObject.GetComponent <BagItemGrid>();  //获取gridT染上form身上的gridItemGrid

            dragItem.setImage(bagItemGrid.id);
            //Destroy(gridTransform.GetChild(1).gameObject);
            gridTransform.GetChild(1).gameObject.GetComponent <Image>().enabled = false;
            isDrag = true;
        }
    }
コード例 #5
0
ファイル: Bag.cs プロジェクト: Ldrumstick/RPG-darklight
    /// <summary>
    /// 拾取到id的物品,并添加到物品栏里面
    /// 处理拾取物品的功能
    /// </summary>
    /// <param name="id"></param>
    public bool GetID(int id, int count = 1)
    {
        //查找在所有物品中是否有该物品
        //如果存在 count +1
        //不存在,查找空的方格,然后把新创建的BagItem放到这个空的方格中
        getSuccess = false;
        BagItemGrid grid = null;

        foreach (BagItemGrid temp in itemGridList)
        {
            if (temp.id == id)
            {
                grid = temp;
                break;
            }
        }
        if (grid != null)
        {
            grid.PlusCount(count);
            getSuccess = true;
        }
        else
        {
            foreach (BagItemGrid temp in itemGridList)
            {
                if (temp.id == 0)
                {
                    grid = temp;
                    break;
                }
            }
            if (grid != null)
            {
                GameObject itemGo = Instantiate(bagItem, grid.transform);
                itemGo.transform.localPosition = Vector3.zero;
                grid.SetByID(id, count);
                getSuccess = true;
            }
        }
        return(getSuccess);
    }
コード例 #6
0
    public void GetId(int id)
    {
        BagItemGrid grid = null;

        foreach (BagItemGrid t in ItemList)
        {
            if (t.id == id)
            {
                grid = t; break;
            }
        }
        if (grid != null)
        {
            BagItem item = grid.GetComponentInChildren <BagItem>();
            item.add();
        }
        else
        {
            foreach (BagItemGrid t in ItemList)
            {
                if (t.id == 0)
                {
                    grid = t; break;
                }
            }
            if (grid != null)
            {
                /*bagItem = (BagItem)Instantiate(bagItem, Vector3.zero, transform.rotation);
                 * bagItem.transform.parent = grid.transform;
                 *
                 * bagItem.transform.localPosition = Vector3.zero;*/
                bagItem = grid.GetComponentInChildren <BagItem>();
                grid.id = id;
                bagItem.SetId(id);
            }
        }
    }
コード例 #7
0
ファイル: Bag.cs プロジェクト: Ldrumstick/RPG-darklight
 /// <summary>
 /// 鼠标移开隐藏物品详情
 /// </summary>
 private void BagItemGrid_OnExit()
 {
     dressGrid = null;
     itemDecUI.CloseDec();
     showingDec = false;
 }
コード例 #8
0
 private void Awake()
 {
     image   = GetComponent <Image>() as Image;
     itemnum = GetComponentInChildren <Text>();//取到了
     parent  = GetComponentInParent <BagItemGrid>();
 }