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