Выборка из массива

Общие вопросы о Unity3D

Выборка из массива

Сообщение mepihin 30 ноя 2013, 20:40

Вот мне надо остановить все звуки в игре кроме одного. Можно ли сделать это так?
Синтаксис:
Используется csharp
                        for (int i = 0; i < audioobjects.Length; i++) {
                                if (audioobjects[i].name != "Лифт")
                                audioobjects[i].Pause();
                        }

Где audioobjects - массив всех объектов, хранящие звук.
Если нет, то скажите как остановить все звуки кроме одного.

Делается поиск:
Синтаксис:
Используется csharp
audioobjects = (AudioSource[])FindObjectsOfType(typeof(AudioSource));
Аватара пользователя
mepihin
UNIверсал
 
Сообщения: 418
Зарегистрирован: 01 янв 2013, 20:58
Откуда: Россия - Москва
Skype: live:snukler

Re: Выборка из массива

Сообщение jetyb 30 ноя 2013, 22:46

Можно, только нерационально. Лучше заранее хранить список всех проигрываемых звуков и перебирать его.

Не помню уже, но приведение к AudioSource[] может и не работать - тогда сделать его массивом object[] и приводить поэлементно.
jetyb
Адепт
 
Сообщения: 1486
Зарегистрирован: 31 окт 2011, 17:21

Re: Выборка из массива

Сообщение mepihin 30 ноя 2013, 23:09

jetyb писал(а):Можно, только нерационально. Лучше заранее хранить список всех проигрываемых звуков и перебирать его.

Не помню уже, но приведение к AudioSource[] может и не работать - тогда сделать его массивом object[] и приводить поэлементно.

То есть лучше привести к игровым объектам и там уже по имени проверять??
Аватара пользователя
mepihin
UNIверсал
 
Сообщения: 418
Зарегистрирован: 01 янв 2013, 20:58
Откуда: Россия - Москва
Skype: live:snukler

Re: Выборка из массива

Сообщение mepihin 01 дек 2013, 21:20

Все, решил проблему:
Синтаксис:
Используется csharp
if (audioobjects[i].gameObject.name != "лифт")
Аватара пользователя
mepihin
UNIверсал
 
Сообщения: 418
Зарегистрирован: 01 янв 2013, 20:58
Откуда: Россия - Москва
Skype: live:snukler

Re: Выборка из массива

Сообщение Woolf 01 дек 2013, 21:23

Я как-то с очень большим подозрением отношусь к проверке по имени, да еще и на русском. Вообще, если у вас идет проверка в условии строк - то это плохой код. Даже банально потому, что проверка строк очень медленная операция.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Выборка из массива

Сообщение mepihin 01 дек 2013, 21:25

Woolf писал(а):Я как-то с очень большим подозрением отношусь к проверке по имени, да еще и на русском. Вообще, если у вас идет проверка в условии строк - то это плохой код. Даже банально потому, что проверка строк очень медленная операция.

Могу и по тегу... Но и так неплохо работает, причем не жрет толком ничего
Аватара пользователя
mepihin
UNIверсал
 
Сообщения: 418
Зарегистрирован: 01 янв 2013, 20:58
Откуда: Россия - Москва
Skype: live:snukler

Re: Выборка из массива

Сообщение nile 02 дек 2013, 12:42

http://docs.unity3d.com/Documentation/S ... olume.html

bool ignoreListenerVolume;
Description
This makes the audio source not take into account the volume of the audio listener.

Enable this when playing back music. When playing back music you want a separate setting which is unaffected by the normal sound effects volume.


 Итого, если я правильно понял, вырубаем звук AudioListener,   а к выбранному AudioSource добавляем то, что написано выше по ссылке.
Аватара пользователя
nile
Старожил
 
Сообщения: 848
Зарегистрирован: 25 фев 2011, 17:17


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9