Пример #1
0
    public void GridUI_OnLeftEndDrag(Transform GridTransform, Transform GridEndTransform)
    {
        isDrag = false;
        DragItemUi.Hide();

        /*判断拖拽结束时指着的格子上有没有物体,如果有就进行交换,没有就把物品直接放上去*/


        if (GridEndTransform == null)                 //扔东西
        {
            ItemModel.DeleteItem(GridTransform.name); //删除之前格子的信息
            Debug.LogWarning("物品已扔");
        }


        else if (GridEndTransform.tag == "Grid")                   //如果拖到另一个格子或者当前格子里里
        {
            if (GridEndTransform.childCount == 0)                  //直接扔进去
            {
                Item item = ItemModel.GetItem(GridTransform.name); //获得之前的数据
                this.CreateNewItem(item, GridEndTransform);        //创建出新的Item
                ItemModel.DeleteItem(GridTransform.name);          //删除之前格子的信息
            }
            else//交换
            {
                Item item1 = ItemModel.GetItem(GridTransform.name);    //获得之前的数据
                Item item2 = ItemModel.GetItem(GridEndTransform.name); //获得之后的数据
                Destroy(GridEndTransform.GetChild(0).gameObject);      //将该位置的物体删除
                ItemModel.DeleteItem(GridTransform.name);              //删除之后格子的信息
                ItemModel.DeleteItem(GridTransform.name);              //删除之前格子的信息
                this.CreateNewItem(item1, GridEndTransform);           //创建出新的Item
                this.CreateNewItem(item2, GridTransform);              //创建出新的Item
            }
        }
        else//如果拖到UI其他地方
        {
            Item item = ItemModel.GetItem(GridTransform.name);//获得之前的数据
            this.CreateNewItem(item, GridTransform);//创建出新的Item
        }
    }
Пример #2
0
    private void GridUI_ExitDrag(Transform lasttransform, Transform transform)
    {
        Isdrag = false;
        dragitemui.HideText();

        if (transform == null)   //ui 外
        {
            ItemModel.DeleteItem(lasttransform.name);
            Debug.Log("物品已移除");
        }
        else if (transform.tag == "Grid")  //拖到格子里
        {
            if (transform.childCount == 0) //空格子
            {
                Item item = ItemModel.GetItem(lasttransform.name);
                if (item != null)
                {
                    ItemModel.DeleteItem(lasttransform.name);
                }
                CreatNewItem(item, transform);
            }
            else          //已存在交换
            {
                //删除原来的物品
                Destroy(transform.GetChild(0).gameObject);
                //获取数据
                Item prevGirdItem  = ItemModel.GetItem(lasttransform.name);
                Item enterGirdItem = ItemModel.GetItem(transform.name);
                //交换的两个物体
                this.CreatNewItem(prevGirdItem, transform);
                this.CreatNewItem(enterGirdItem, lasttransform);
            }
        }
        else      //格子外
        {
            // Item item = ItemModel.GetItem(lasttransform.name);

            // CreatNewItem(item, lasttransform);
        }
    }
Пример #3
0
    //放弃把背包内物品拖拽到场景里了。。。还是试试点击吧
    //private void GridUI_OnLeftDrag(Transform DragTransform)
    //{
    //    isdrag = true;
    //    Vector2 position;
    //    float leftPos,rightPos,upPos,downPos;
    //    RectTransformUtility.ScreenPointToLocalPointInRectangle(GameObject.Find("Canvas").transform as RectTransform,
    //            Input.mousePosition, MainCamera, out position);
    //    rightPos = GridPanel.sizeDelta.x / 2;
    //    leftPos = -GridPanel.sizeDelta.x / 2;
    //    upPos = GridPanel.sizeDelta.y / 2;
    //    downPos = -GridPanel.sizeDelta.y / 2;
    //    Debug.Log(position);
    //    if (position.x < leftPos || position.x > rightPos || position.y > upPos || position.y < downPos)
    //    {
    //        isOut = true;
    //    }
    //    if (isOut == true)
    //    {
    //        GameObject.Find("Canvas").GetComponent<Canvas>().planeDistance = 0;
    //        isOut = false;

    //    }

    //}


    private void GridUI_OnLeftEndDrag(Transform GridTransStart, Transform GridTransEnd)             //当鼠标停止拖拽
    {
        isdrag = false;
        dragItemUI.hidden();                                         //隐藏被拖拽时出现的物品

        if (GridTransEnd.tag == "Grid")                              //若拖到了另一个格子上
        {
            if (GridTransEnd.childCount == 0)                        //若为空格子
            {
                Items item = ItemModel.GetItem(GridTransStart.name); //取得开始拖拽的格子对应的物品
                ItemModel.DeleteItem(GridTransStart.name);           //删除开始拖拽的格子存储的物品信息
                CreatNewItem(item, GridTransEnd);                    //在拖拽结束的格子处创建对应物品并存储数据
            }
            else                                                     //交换
            {
                Destroy(GridTransEnd.GetChild(0).gameObject);
                //获取拖拽开始和结束时的物品信息
                Items ItemStart = ItemModel.GetItem(GridTransStart.name);
                Items ItemEnd   = ItemModel.GetItem(GridTransEnd.name);
                //得到未点燃的火把
                if ((ItemStart.ID == 2 && ItemEnd.ID == 1) || (ItemStart.ID == 1 && ItemEnd.ID == 2))
                {
                    CreatNewItem(PackageItemList[4], GridTransEnd);
                }

                else
                {
                    //在开始结束的格子中分别创建结束开始的物品
                    CreatNewItem(ItemStart, GridTransEnd);
                    CreatNewItem(ItemEnd, GridTransStart);
                }
            }
        }
        else                       //拖到其他地方,返回原位置
        {
            Items item = ItemModel.GetItem(GridTransStart.name);
            CreatNewItem(item, GridTransStart);
        }
    }
Пример #4
0
    public void GridUIOnEnter(Transform gridTransform)  //鼠标移动到物品上面
    {
        Item item = ItemModel.GetItem(gridTransform.name);

        if (item == null)
        {
            return;
        }
        else
        {
            //des更新为选择的物品
            string des = GetDesText(item);
            desUI.UpdateDes(des);

            Vector2 position;
            RectTransformUtility.ScreenPointToLocalPointInRectangle(GameObject.Find("Canvas").transform as RectTransform,
                                                                    Input.mousePosition, null, out position);
            desUI.SetLocalPosition(position);

            desUI.ShowDes();
        }
    }
Пример #5
0
    private void GridUI_OnLeftEndDrag(Transform prevTransform, Transform enterTransform)
    {
        isDrag = false;
        DragItemUI.Hide();

        if (enterTransform == null)//扔东西
        {
            ItemModel.DeleteItem(prevTransform.name);
            Debug.LogWarning("物品已扔");
        }
        else if (enterTransform.tag == "Grid")  //拖到另一个或者当前格子里
        {
            if (enterTransform.childCount == 0) //直接扔进去
            {
                Item item = ItemModel.GetItem(prevTransform.name);
                this.CreatNewItem(item, enterTransform);
                ItemModel.DeleteItem(prevTransform.name);
            }
            else //交换
            {
                //删除原来的物品
                Destroy(enterTransform.GetChild(0).gameObject);
                //获取数据
                Item prevGirdItem  = ItemModel.GetItem(prevTransform.name);
                Item enterGirdItem = ItemModel.GetItem(enterTransform.name);
                //交换的两个物体
                this.CreatNewItem(prevGirdItem, enterTransform);
                this.CreatNewItem(enterGirdItem, prevTransform);
            }
        }
        else//拖到UI的其他地方,让他还原
        {
            Item item = ItemModel.GetItem(prevTransform.name);
            this.CreatNewItem(item, prevTransform);
        }
    }
Пример #6
0
    private void GridUIItem_onLeftEndDrag(Transform prevTransform, Transform enterTransform)
    {
        //ragItemUIScript
        isDrag = false;
        dragItemUIScript.IsShowDragItem(false);

        if (enterTransform == null)//拖到UI外面,扔了
        {
            ItemModel.DeleteItem(prevTransform.name);
            Debug.Log("扔东西");
        }
        //1.拖到另一地方,
        else if (enterTransform.tag == "Grid")
        {//是否子物体有值
            if (enterTransform.childCount == 0)
            {
                Item item = ItemModel.GetItem(prevTransform.name);
                createNewItem(item, enterTransform);
                ItemModel.DeleteItem(prevTransform.name);
            }
            else
            {
                Destroy(enterTransform.GetChild(0).gameObject);
                Item prevGridItem  = ItemModel.GetItem(prevTransform.name);
                Item enterGridItem = ItemModel.GetItem(enterTransform.name);

                this.createNewItem(prevGridItem, enterTransform);
                this.createNewItem(enterGridItem, prevTransform);
            }
        }
        else//拖到UI的其他 的地方
        {
            Item item = ItemModel.GetItem(prevTransform.name);
            createNewItem(item, prevTransform);
        }
    }
Пример #7
0
    /// <summary>
    /// 结束拖拽,实现物品的交换或者恢复原位置
    /// </summary>
    /// <param name="prevTransform"></param>
    /// <param name="enterTransform"></param>
    void GridUI_OnLeftEndDrag(Transform prevTransform, Transform enterTransform)
    {
        isDrag = false;

        m_DragItemUI.Hide();

        if (enterTransform == null) //拖到其他位置,丢弃
        {
            ItemModel.DeleteItem(prevTransform.name);
            Debug.Log("物品已扔");
        }
        else if (enterTransform.tag == "Grid")      //和别的网格交换或者自己交换
        {
            if (prevTransform == enterTransform)    //和自己交换
            {
                Debug.Log("果然是同一位置!");

                Item item = ItemModel.GetItem(prevTransform.name);

                if (item != null)
                {
                    this.CreateNewItem(item, prevTransform);
                }
            }
            else                                    //和别的网格交换
            {
                if (enterTransform.childCount == 0) //如果拖拽到的位置为空
                {
                    Item item = ItemModel.GetItem(prevTransform.name);

                    //保证拖拽的网格内部有物体,如果没有,则不会创建新的物体
                    if (item == null)
                    {
                        return;
                    }

                    ItemModel.DeleteItem(prevTransform.name);
                    this.CreateNewItem(item, enterTransform);
                }
                else   //有物体
                {
                    Destroy(enterTransform.FindChild("Item(Clone)").gameObject);

                    Item curItem  = ItemModel.GetItem(prevTransform.name);
                    Item nextItem = ItemModel.GetItem(enterTransform.name);

                    this.CreateNewItem(curItem, enterTransform);
                    this.CreateNewItem(nextItem, prevTransform);
                }
            }
        }
        else //拖到别的位置,恢复到自身状态
        {
            Item item = ItemModel.GetItem(prevTransform.name);

            if (item != null)
            {
                this.CreateNewItem(item, prevTransform);
            }
        }
    }