Показать сообщение отдельно
Старый 02.07.2012, 11: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)
 
Ответить с цитированием