Всем привет! И это снова я! Сейчас мы будем делать 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];
}
}
}
}Теги: MP3, плеер