Четверг, 21 Ноября 2024, 18:54

Приветствую Вас Гость

Меню сайта
Категории каталога
Создание игр [358]
Статьи об общих понятиях связанных с созданием игр.
Программирование [83]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [147]
Статьи о программах для создания игр, уроки и описания.
Софт [43]
Различные программы, в том числе в помощь игроделам.
2D-графика [14]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [17]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [5]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [167]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [132]
Статьи, которые не вошли в определённые разделы.
Наш опрос
Ваше отношение к российским разработкам?
Всего ответов: 5763
Главная » Статьи » Создание игр

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

Категория: Создание игр | Добавил: Nekit_Aut (31 Марта 2012)
Просмотров: 21121 | Комментарии: 8 | Рейтинг: 4.8/9 |
Теги: Audio, mp3, МП3 плеер, Unity3D, AudioSource, Переключатель, C#, скрипты
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Делаем MP3-плеер в Unity3D», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 8
+0-
8 IL-98-YA   (04 Мая 2012 20:15) [Материал]
IL-98-YAэто подходит для смены оружия... smile

+3-
1 Nekit_Aut   (31 Марта 2012 16:44) [Материал]
Nekit_AutИзвиняюсь, выделил цветом. Ибо [code] не работает sad

+6-
2 JakePower   (31 Марта 2012 21:35) [Материал]
JakePowerпацан да ты гений!
+100500

+5-
3 Nekit_Aut   (31 Марта 2012 21:36) [Материал]
Nekit_AutБлагодарю... shy

+-5-
4 JakePower   (31 Марта 2012 21:39) [Материал]
JakePowerне красней, выше нос!
я бы хотел тебя в команду, но я перейду на GLDSource dry

+5-
5 Nekit_Aut   (31 Марта 2012 21:56) [Материал]
Nekit_AutСсорь... Но моё сердце принадлежит Flight-Dream Studio tongue . И наврятли смог бы присоединиться к тебе.

+3-
6 Cre-game   (01 Апреля 2012 07:07) [Материал]
Cre-gameДля того чтобы работал BB-тег CODE нужно включить редактор BB-кодов, а не HTML-редактор, который стоит по умолчанию.

+4-
7 Nekit_Aut   (01 Апреля 2012 15:47) [Материал]
Nekit_AutТак я и ставил его! У меня что-то глючит(

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • J.U.R.P.E.
  • vbGORE
  • Kochol
  • EDuke32
  • Harfang 3D
  • Luxe Engine
  • Platinum Arts Sandbox
  • Gideros Studio
  • RTS Creator
  • EMG Studio
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг