我有一个对象“ 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);
}
}
}
}
答案 0 :(得分:2)
很简单,您要更新SplitMenu
的位置,而不是currentMenu
。
SplitMenu
是预制对象,而不是新创建的对象。因此,当您更改其位置时,新对象(currentMenu
)不会移动。
下次单击时,将使用预制板创建一个新菜单-上次更改了位置-因此新菜单具有上次单击的位置。