Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Unity

Unity Мультиплатформенный инструмент для разработки игр

Ответ
 
Опции темы
Старый 02.07.2012, 07:05   #1
ShadowCoder
AnyKey`щик
 
Аватар для ShadowCoder
 
Регистрация: 02.07.2012
Сообщений: 3
Написано 0 полезных сообщений
(для 0 пользователей)
Вопрос Динамическое создание AudioClip

Уважаемые знатоки, помогите начинающему разобраться, как на Unity реализовать такую задачу:

1) В проекте имеется несколько звуков, их количество может быть очень большим.

2) В целях оптимизации хочу использовать одну функцию, доступную для всех скриптов движка. Условно назовем ее PlaySound, в качестве параметров передаются два значения, а рабочий код выглядит следующим образом:
(JavaScript)
/*
    fname - название звука, который должен быть проигран,
    pos - координаты, в которых он воспроизводится (пока не используется)
*/

var soundAudioClip// этой переменной назначаем звук через Inspector

function PlaySound(fnameStringposVector3) {
    var 
goGameObject = new GameObject("tmp_" fname);
    var 
audioAudioSource go.AddComponent(AudioSource);
    
audio.clip sound;
    
audio.PlayClipAtPoint(audio.clipgo.transform.position);
    
    
yield WaitForSeconds(sound.length);
    
Destroy(go);

Работа скрипта: создается временный объект "go", ему быстренько назначается AudioSource + AudioClip, после проигрывания звука объект удаляется (это эксперимент, поэтому всё так "сложно" ).

3) А теперь собсно проблема.

Все звуки доступны в Assets, их нужно лишь найти по заданному имени - "fname", назначить в качестве "audio.clip" и воспроизвести в нужной точке. Как-то так:
PlaySound("Welcome"transform.position); 
Как же это сделать?
Важно, чтобы переменная "sound" получала указатель на клип именно через работу скрипта, а не путем переноса файла в Inspector'е!

Пробовал "AudioClip.Create":
var soundAudioClip AudioClip.Create(fname44100244100truefalse); 
Здесь sound создается, но пустой. Вероятно, после этого нужно загрузить данные, но как?

В варианте с Resources.Load(fname) функция вообще возвращает NULL. Почему?

С Find тоже не ладится:
var sound GameObject.Find("Welcome"); 
Видимо несоответствие типов...

Вот сколько вопросов! Так как начал осваивать Юнити недавно, сейчас для меня очень важно разобраться в этих особенностях, почему скрипт не работает. Хожу вокруг да около, но не понимаю, где ошибка. Синтаксически вроде бы верно, компилятор не ругается, что еще больше усложняет отладку. Хэлп!
(Offline)
 
Ответить с цитированием
Старый 02.07.2012, 07:15   #2
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,505
Написано 2,960 полезных сообщений
(для 5,247 пользователей)
Ответ: Динамическое создание AudioClip

Сообщение от ShadowCoder Посмотреть сообщение
В варианте с Resources.Load(fname) функция вообще возвращает NULL. Почему?
Чтобы загружать ресурсы, надо предварительно положить их в папку с названием Resources. Иначе они не попадут в билд.

Find ищет GameObject, а тебе нуден клип, какая связь вообще его использовать?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ShadowCoder (02.07.2012)
Старый 02.07.2012, 07:38   #3
ShadowCoder
AnyKey`щик
 
Аватар для ShadowCoder
 
Регистрация: 02.07.2012
Сообщений: 3
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Динамическое создание AudioClip

Сообщение от pax Посмотреть сообщение
Чтобы загружать ресурсы, надо предварительно положить их в папку с названием Resources. Иначе они не попадут в билд.
Вот! Этого я и не знал! Когда создал папку и переместил звуковой файл в нее (Resources/Audio/Welcome.mp3), то функция заработала именно так как мне и нужно. А я то пляски с бубном устраивал, думал, чего ей надо!

Спасибо!

Сообщение от pax Посмотреть сообщение
Find ищет GameObject, а тебе нуден клип, какая связь вообще его использовать?
- да это уже от отчаяния Пробовал различные варианты, все что под руку попадались.
(Offline)
 
Ответить с цитированием
Старый 02.07.2012, 11:05   #4
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,505
Написано 2,960 полезных сообщений
(для 5,247 пользователей)
Ответ: Динамическое создание AudioClip

Ну вообще в справке в секции Description это написано:

Description
Loads an asset stored at path in a Resources folder.

Returns the asset at path if it can be found otherwise returns null. The path is relative to any Resources folder inside the Assets folder of your project, extensions must be omitted.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 02.07.2012, 21:58   #5
ShadowCoder
AnyKey`щик
 
Аватар для ShadowCoder
 
Регистрация: 02.07.2012
Сообщений: 3
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Динамическое создание AudioClip

Написано, да. Но я со своим английским неправильно интерпретировал: посчитал, что "Resources" относится к папке "Assets" и потому запутался.
(Offline)
 
Ответить с цитированием
Старый 23.09.2012, 18:56   #6
GiORg1
AnyKey`щик
 
Регистрация: 07.08.2012
Сообщений: 1
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Динамическое создание AudioClip

daa oshibki tam gde nikogda ne dumaesh
(Offline)
 
Ответить с цитированием
Старый 23.09.2012, 19:25   #7
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,505
Написано 2,960 полезных сообщений
(для 5,247 пользователей)
Ответ: Динамическое создание AudioClip

Сообщение от GiORg1 Посмотреть сообщение
daa oshibki tam gde nikogda ne dumaesh
2GiORg1 пишите пожалуйста по русски, а не транслитом.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 00:40.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com