В игре есть одна кнопка, и если вы щелкаете по нему, кнопка должна создать объект, но при первом нажатии на нее создается один клон, а после второго щелчка создается добавление еще одного клона к другой вместо одного клона.
public float positionX;
public float positionY;
public Button buttonUp;
Button btn1;
Сначала я создал переменные.
void Start ()
{
positionX = transform.position.x;
positionY = transform.position.y;
btn1 = buttonUp.GetComponent<Button>();
}
Затем присваиваются значения позиции в методе запуска и компоненте кнопки
void Update()
{
if (Input.GetMouseButtonDown(0))
{
btn1.onClick.AddListener(UpClicked);
}
}
И контролируется, если пользователь нажимает кнопку set addListener
float[] CreatePlayerPartsUp(float pX, float pY)
{
float positionXFun = pX;
float positionYFun = pY;
GameObject part = Instantiate(playerParts, new Vector2(positionXFun, positionYFun + 16), Quaternion.identity);
float[] turnPosition = new float[2]{part.transform.position.x, part.transform.position.y};
return turnPosition;
}
После этого я создал метод, который сохраняет положение объекта и возвращал их с помощью массива.
void UpClicked()
{
float[] createdPosition= CreatePlayerPartsUp(positionX, positionY);
positionX = createdPosition[0];
positionY = createdPosition[1];
}
Наконец, я вызвал метод и назначил новую позицию.
Но проблема возникла, и я не знаю, почему это произошло. (Сначала создайте 1, но в другое время он начинает создавать, добавляя еще один клон вместо 1)