События кнопок трансформации - PullRequest
0 голосов
/ 10 сентября 2018

У меня дилемма. Я пытаюсь сделать что-то вроде: у меня есть 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, это выдаст мне ошибку. HELP !!!

1 Ответ

0 голосов
/ 10 сентября 2018

Когда вы начинаете, у вас еще ничего не выбрано => вы на самом деле не хотите, чтобы оно было 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...