Всем привет! И это снова я! Сейчас мы будем делать mp3 плеер с переключением треков в Unity! Итак... Приступим! Сначала укажем, AudioSource, который будет нашим плеером (AudioSource - источник звука). Но до этого его нужно сделать в редакторе (Component => Audio => AudioSource). И пишем скрипт (C#). Укажем преременную AudioSource:
public AudioSource pleer;
Тут мы в инспекторе объявим наш AudioSource в переменную. Теперь укажем переменную треков в плеере:
public AudioClip[] treks;
Мы поставили "[]" для того, чтобы в инспекторе же указывать количество треков. Теперь идём дальше. Поставим две числовые переменные:
int currentTrek = 0; int numberTrek;
currentTrek - это переменная, отвечающая за играющий трек, а numberTrek - (всё и так понятно) номер трека. Теперь создадим метод (void) Awake(), и укажем, чему равен номер нашего трека:
void Awake() { numberTrek = treks.Length - 1; }
Мы указали, что numberTrek - это количество треков, но буз одного. Теперь делаем метод (void) Update():
void Update() { if (Input.GetKeyDown(KeyCode.Z)) { pleer.Play(); }
if (Input.GetKeyDown(KeyCode.X)) { pleer.Stop(); } }
Тут мы сделали запуск и остановку нашего AudioSource. Запуск будет происходить по нажатию "Z", а остановка по нажатию "X". Создадим новый метод с числовой переменной в нём. Переключатель треков. Это будет метод (void) SelectTrek(int i):
void SelectTrek(int i) { for (int cnt = 0; cnt < treks.Length; cnt++) { if (cnt == i) { pleer.clip = treks[cnt]; } } }
Итак... Сейчас я объясню, что написано в методе. Мы создали цикл с числовой переменной cnt. Указали, что она меньше количества треков и прибавляли её. Дальше мы ставим условие, если cnt равно i! И если они равны, то у нашего AudioSource "pleer" клип - это переменная treks с номером переменной cnt. Теперь возвращаемся в метод (void) Update(), и пишем условия переключения:
if (Input.GetKeyDown(KeyCode.B)) { if (currentTrek + 1 <= numberTrek) { currentTrek++; SelectTrek(currentTrek); pleer.Play(); } }
Тут мы поставили условие, если нажата кнопка "B". И в условии второе условие, если currentTrek + 1 меньше или равно numberTrek, то currentTrek увеличивается на один, переменная в SelectTrek() i равна currentTrek, и запускаем AudioSource. Почти таким же образом делаем перемотку трека назад, но мы сделаем условие в else:
else if(Input.GetKeyDown(KeyCode.V)) { if (currentTrek - 1 >= 0) { currentTrek--; SelectTrek(currentTrek); pleer.Play(); }
Тут мы уменьшаем переменную текущего трека. А теперь ставим ещё одно else:
else { currentTrek = numberTrek; SelectTrek(currentTrek); }
Тут мы возвращаем значения. Это всё. Осталось только указать всё в инспекторе. У нас получился вот такой вот скриптик:
using UnityEngine; using System.Collections;
public class MP3Pleer : MonoBehaviour { public AudioSource pleer; int currentTrek = 0; int numberTrek; public AudioClip[] treks;
void Awake () { numberTrek = treks.Length - 1; }
void Update () { if (Input.GetKeyDown(KeyCode.Z)) { pleer.Play(); }
if (Input.GetKeyDown(KeyCode.X)) { pleer.Stop(); }
if (Input.GetKeyDown(KeyCode.B)) { if (currentTrek + 1 <= numberTrek) { currentTrek++; SelectTrek(currentTrek); pleer.Play(); } } else if(Input.GetKeyDown(KeyCode.V)) { if (currentTrek - 1 >= 0) { currentTrek--; SelectTrek(currentTrek); pleer.Play(); } else { currentTrek = numberTrek; SelectTrek(currentTrek); } } }
void SelectTrek(int index) { for (int cnt = 0; cnt < treks.Length; cnt++) { if (cnt == index) { pleer.clip = treks[cnt]; } } } }
|