Кнопки преобразовывают события

У меня дилемма. Пытаюсь сделать что-то вроде: у меня 3 кнопки, я нажимаю на одну, она увеличивается, нажимаю на другую, она увеличивается и предыдущая возвращается к исходному размеру.

    private void PigeonholesHasClicked(GameObject target, MouseEventType type)
{
    if (type == MouseEventType.CLICK)
    {
        TargetIndex = System.Array.IndexOf(Pigeonholes, target);
        PigeonholesTrasnform();
    }
}

Vector3 mPosition;
int lastIndex = 0;
public float mIndex;
private void PigeonholesTrasnform()
{
    mPosition = new Vector3(Pigeonholes[TargetIndex].transform.position.x - mIndex, Pigeonholes[TargetIndex].transform.position.y, 0f);
    Pigeonholes[TargetIndex].transform.DOMove(mPosition, 0.5f);
    Pigeonholes[TargetIndex].GetComponent<BoxCollider2D>().enabled = false;
    if (TargetIndex != lastIndex)
    {
        mPosition = new Vector3(Pigeonholes[lastIndex].transform.position.x + mIndex, Pigeonholes[lastIndex].transform.position.y, 0f);
        Pigeonholes[lastIndex].transform.DOMove(mPosition, 0.5f);
        for (int i = 0; i < Pigeonholes.Length; i++)
        {
            if (i != TargetIndex)
                Pigeonholes[i].GetComponent<BoxCollider2D>().enabled = true;
        }
    }
    lastIndex = TargetIndex;
}

Проблема в том, что если я нажимаю кнопку 1 или 2, кнопка 0 перемещается вправо на 0,4. Если я сначала начну набирать 0, а затем нажимаю 1 или 2, тогда все идет нормально. Идея в том, что lastIndex равен 0 изначально, если я сделаю это -1, это даст мне ошибку. ПОМОЩЬ!!!

0
0
41
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Когда вы начинаете, у вас еще ничего не выбрано => изначально вы не хотите, чтобы это был 0.

Я бы изначально оставил lastIndex = -1;, но просто проигнорировал строки

mPosition = new Vector3(Pigeonholes[lastIndex].transform.position.x + mIndex, Pigeonholes[lastIndex].transform.position.y, 0f);
Pigeonholes[lastIndex].transform.DOMove(mPosition, 0.5f);

если это все еще -1 -> означает, что раньше ничего не было выбрано:

if(lastIndex >= 0)
{
    mPosition = new Vector3(Pigeonholes[lastIndex].transform.position.x + mIndex, Pigeonholes[lastIndex].transform.position.y, 0f);
    Pigeonholes[lastIndex].transform.DOMove(mPosition, 0.5f);
}

Да, это то, что я сделал, и все в порядке

George 10.09.2018 11:32

Другие вопросы по теме