我的对象在上一个点击位置移动

时间:2019-02-07 15:42:00

标签: c# unity3d

我有一个对象“ Stick”(结果[0] .gameObject),如果我用鼠标右键单击它,那么它将在上一个单击位置移动。为什么会发生? https://www.youtube.com/watch?v=Q9Xyzo0z_rE&feature=youtu.be

代码:

void Update () {
    if (Input.GetKeyUp(KeyCode.Mouse1))
    {
        pointerEventData = new PointerEventData(eventSystem);
        pointerEventData.position = Input.mousePosition;

        List<RaycastResult> results = new List<RaycastResult>();

        raycaster.Raycast(pointerEventData, results);
        if (results.Count != 0)
        {
            if (results[0].gameObject.tag == "ItemIcon")
            {
                RectTransform resultTransformParent;
                resultTransformParent = results[0].gameObject.transform.parent.GetComponent<RectTransform>();
                if (currentMenu != null)
                    Destroy(currentMenu);
                currentMenu = Instantiate(SplitMenu, transform);
                Debug.Log(resultTransformParent.position);
                SplitMenu.GetComponent<RectTransform>().position = new Vector3(resultTransformParent.anchoredPosition.x,381 - Math.Abs(resultTransformParent.anchoredPosition.y),0);


            }
        }
    }
}

1 个答案:

答案 0 :(得分:2)

很简单,您要更新SplitMenu的位置,而不是currentMenu

SplitMenu是预制对象,而不是新创建的对象。因此,当您更改其位置时,新对象(currentMenu)不会移动。

下次单击时,将使用预制板创建一个新菜单-上次更改了位置-因此新菜单具有上次单击的位置。