//結束Drag:定位
    void OnEndDrag()
    {
        graggingObj.transform.position = uiLayoutOriginPos_list[graggingObj.ui_sort_order];
        uiLayout_list.Sort((x, y) => x.ui_sort_order.CompareTo(y.ui_sort_order));

        graggingObj = null;

        //結束
        if (eEndDrag != null)
        {
            eEndDrag(uiLayout_list);
        }
    }
    List <Vector2> uiLayoutOriginPos_list = new List <Vector2>();        //原本的位置(一開始固定,別改)

    private void Start()
    {
        //取得子物件+排列
        int i = 0;

        foreach (Transform child in transform)
        {
            uiLayout_list.Add(child.GetComponent <GamePlay_UI_btn>());
            uiLayoutOriginPos_list.Add(child.transform.position);

            //下排UI產生
            if (uiLayout_list.Count > i)
            {
                GamePlay_UI_btn _ui_btn = uiLayout_list[i].GetComponent <GamePlay_UI_btn>();

                _ui_btn.ui_sort_order = i;
            }
            else
            {
                //跳過
                uiLayout_list[i].gameObject.SetActive(false);
                uiLayout_list[i].GetComponent <GamePlay_UI_btn>().ui_sort_order = 999 + i;
                i++;
                continue;
            }

            //掛上event監聽
            EventTrigger       trigger        = child.GetComponent <EventTrigger>();
            EventTrigger.Entry entry          = new EventTrigger.Entry();
            EventTrigger.Entry entry_dragging = new EventTrigger.Entry();
            EventTrigger.Entry entry_end      = new EventTrigger.Entry();

            //entry.eventID = EventTriggerType.PointerDown;
            entry.eventID          = EventTriggerType.InitializePotentialDrag;
            entry_dragging.eventID = EventTriggerType.Drag;
            entry_end.eventID      = EventTriggerType.EndDrag;

            entry.callback.AddListener((eventdata) => { btn_OnSelected(); });
            entry_dragging.callback.AddListener((eventdata) => { SortWhenDragging(); });
            entry_end.callback.AddListener((eventdata) => { OnEndDrag(); });

            trigger.triggers.Add(entry);
            trigger.triggers.Add(entry_dragging);
            trigger.triggers.Add(entry_end);

            child.name = i++.ToString();
        }

        GamePlay_FingerControler.OnTouched += Gragging;
    }
    //移動時交換位置:
    void SwapOriginPos(GamePlay_UI_btn tra1, GamePlay_UI_btn tra2)
    {
        tra1.transform.position = uiLayoutOriginPos_list[tra2.ui_sort_order];
        tra2.transform.position = uiLayoutOriginPos_list[tra1.ui_sort_order];

        string _temp = tra1.ui_sort_order.ToString();

        tra1.name = tra2.ui_sort_order.ToString();
        tra2.name = _temp;

        int _temp_order = tra1.ui_sort_order;

        tra1.ui_sort_order = tra2.ui_sort_order;
        tra2.ui_sort_order = _temp_order;
    }
    public void btn_OnSelected()
    {
        if (EventSystem.current.currentSelectedGameObject == null)
        {
            return;
        }
        ;
        GamePlay_UI_btn selected = EventSystem.current.currentSelectedGameObject.GetComponent <GamePlay_UI_btn>();

        if (selected == null)
        {
            return;
        }
        graggingObj = selected;
    }