У меня есть 2D изображение. Что я хочу сделать, так это то, что каждый раз, когда я нажимаю на спрайт, он будет менять изображение (в определенном порядке) и повторять изображение каждые 4 раза, когда я нажимаю на него (таким образом, он повторяет порядок каждые 4 раза). У меня нет идеи, как это сделать, потому что я новичок в единстве. Заранее спасибо.

0
Mark Zareal 24 Фев 2015 в 07:31
1
Напишите что пробовали! это поможет другим дать ответы
 – 
Dinal24
24 Фев 2015 в 07:56
 – 
Greg Lukosek
25 Фев 2015 в 12:36

2 ответа

Предположительно, у вас есть массив или список изображений в том порядке, в котором вы хотите, чтобы они отображались (я назову это images), и у вас есть способ обнаружить щелчок по спрайту. Есть много способов сделать то, что вы хотите в коде, один из них будет выглядеть примерно так:

int imageNum = 0;                               //this should be class wide
...
<sprite click detection>
{
    imageNum++;                                 //increment the imageNum
    imageNum = imageNum >= 4 ? 0 : imageNum;    //reset to 0 on the 4th click
    sprite = images[imageNum];                  //set the sprite to the next image
}

Если вы опубликуете то, что вы уже пробовали, я могу сделать этот код ближе к тому, что вы действительно хотите.

1
Adam H 25 Фев 2015 в 12:22
Ваш пример требует небольшого гольфа (но, ОП, на самом деле не пишите это, иначе вы возненавидите себя, когда попытаетесь прочитать это позже): if (sprite click detection) sprite = images[imageNum = (imageNum + 1)%4];
 – 
piojo
25 Фев 2015 в 13:08

Прежде чем погрузиться в мир единства, попробуйте изучить несколько руководств по C# или основам Java, это очень поможет. Что касается вопроса, создайте скрипт для объекта или нажатия события с базовым счетчиком, который увеличивает значение на 1 для каждого нажатия. что-то типа:

    while(counter = 4)
{
   picture.source = <new picture>
   counter.int = 1
}

Или что-то в этом роде.

0
George Gall 24 Фев 2015 в 07:35
Привет, в единстве есть ошибка, когда вы используете цикл while, он сбивает с толку движок, поэтому он не отвечает. Я пробовал циклы while раньше, но он просто падает. Я попробовал оператор if, прежде чем задавать вопрос, но он сразу изменил бы изображение на третье изображение, и я не знаю, почему.
 – 
Mark Zareal
24 Фев 2015 в 07:55
Извини, неважно. Это потому, что я не добавил возврат; в конце петли. Но есть одна проблема. Когда я щелкаю по нему в четвертый раз, он просто переходит прямо к 1-му изображению, не отображая четвертое изображение. Я думаю, это происходит потому, что при counter = 4 счетчик просто переключается прямо на номер 1 без задержки изображения. Как решить эту проблему?
 – 
Mark Zareal
24 Фев 2015 в 08:03
Галл, с этим кодом довольно много проблем. Для начала вы использовали оператор присваивания в условии while. Это приведет к тому, что значение 4 будет присваиваться counter на каждой итерации, что приведет к бесконечному циклу.
 – 
Adam H
24 Фев 2015 в 18:56
Как ты это делаешь? @Адам Х
 – 
Mark Zareal
25 Фев 2015 в 09:18