// Update is called once per frame
    void Update()
    {
        //Camera Drag & Zoom
        {
            if (Input.GetMouseButtonDown(1))
            {
                _cameraOldPos = Camera.main.transform.position;
            }

            if (Input.GetMouseButton(1))
            {
                Vector3 pos = Camera.main.ScreenToViewportPoint(Input.mousePosition);
                if (Mathf.Abs(_cameraOldPos.x - pos.x) > 0 ||
                    Mathf.Abs(_cameraOldPos.y - pos.y) > 0)
                {
                    if (false == _bDrag)
                    {
                        _cameraOldPos += pos * _dragSpeed;
                        _bDrag         = true;
                    }
                    Camera.main.transform.position = _cameraOldPos + -pos * _dragSpeed;
                }
            }

            if (Input.GetMouseButtonUp(1))
            {
                _bDrag = false;
            }

            float wheelInput = Input.GetAxis("Mouse ScrollWheel");
            if (eMouseOn.WORKSPACE == _eMouseOn && (wheelInput > 0 || wheelInput < 0))
            {
                Camera.main.orthographicSize += -wheelInput;
            }
        }

        //Tile Transform
        if (Input.GetKeyDown(KeyCode.T))
        {
            _bTransformMode     = !_bTransformMode;
            _selectedMenuTile   = null;
            _selectedTileObject = null;

            if (_bTransformMode)
            {
                Debug.Log("Transform mode On");
            }
            else
            {
                Debug.Log("Transform mode Off");
            }
        }

        //Raycast on MenuObject or TileObject
        if (Input.GetMouseButton(0))
        {
            if (EventSystem.current.IsPointerOverGameObject())
            {
                return;
            }

            if (null != _selectedMenuTile || _bTransformMode)
            {
                Vector2      worldPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                RaycastHit2D hit        = Physics2D.Raycast(worldPoint, Vector2.zero);
                if (null != hit.collider)
                {
                    GridTile tile = hit.collider.GetComponent <GridTile>();

                    if (false == _bTransformMode)
                    {
                        Sprite sprite = _selectedMenuTile.GetComponent <Image>().sprite;
                        tile.SetTileObjectBySprite(sprite);
                        tile.SetCanMove(_bCanMove);
                    }
                    else
                    {
                        _selectedTileObject = tile;
                    }
                }
            }
        }

        //Tile Transform
        if (null != _selectedTileObject)
        {
            if (null != _selectedTileObject.GetTileObject())
            {
                if (Input.GetKeyDown(KeyCode.UpArrow))
                {
                    _selectedTileObject.IncreasePosition();
                }
                else if (Input.GetKeyDown(KeyCode.DownArrow))
                {
                    _selectedTileObject.DecreasePosition();
                }
            }
        }
    }