Уважаемые знатоки, помогите начинающему разобраться, как на Unity реализовать такую задачу:
1) В проекте имеется несколько звуков, их количество может быть очень большим.
2) В целях оптимизации хочу использовать одну функцию, доступную для всех скриптов движка. Условно назовем ее PlaySound, в качестве параметров передаются два значения, а рабочий код выглядит следующим образом:
(JavaScript)
/*
fname - название звука, который должен быть проигран,
pos - координаты, в которых он воспроизводится (пока не используется)
*/
var sound: AudioClip; // этой переменной назначаем звук через Inspector
function PlaySound(fname: String, pos: Vector3) {
var go: GameObject = new GameObject("tmp_" + fname);
var audio: AudioSource = go.AddComponent(AudioSource);
audio.clip = sound;
audio.PlayClipAtPoint(audio.clip, go.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 sound: AudioClip = AudioClip.Create(fname, 44100, 2, 44100, true, false);
Здесь sound создается, но пустой. Вероятно, после этого нужно загрузить данные, но как?
В варианте с Resources.Load(fname) функция вообще возвращает NULL. Почему?
С Find тоже не ладится:
var sound = GameObject.Find("Welcome");
Видимо несоответствие типов...
Вот сколько вопросов! Так как начал осваивать Юнити недавно, сейчас для меня очень важно разобраться в этих особенностях, почему скрипт не работает. Хожу вокруг да около, но не понимаю, где ошибка. Синтаксически вроде бы верно, компилятор не ругается, что еще больше усложняет отладку. Хэлп!