Нет
Столкнулся с проблемой считывания длин звуковых файлов. Трейнз почему-то берёт то ли неправильные, то ли стандартные длины, но при этом проигрывается правильный файл. А вот слип от других файлов. Делаю всё следующим образом: использую уже готовую функцию
Вызываю вот так:
Или вот так (в зависимости от тумблера в кабине):
Конфиг выглядит так:
Во втором же случае, конфиг выглядит так:
При этом, во втором случае всё нормально работает, а в первом - нет. В чём может быть причина? Зависит ли это от порядка расположения файлов в конфиге? (вообще не должно, мы же просто стринг с именем файла передаём в функцию) Или от пробелов/табуляций в самом конфиге?
Забыл добавить, что во втором случае, как видно в конфиге, набор звуковых файлов другой.
Последний раз редактировалось Snark; 22.04.2013 в 19:00.
А ты сам не видишь? Путь в первом конфиге не правильно указан к файлам.
функцию надо переписать, чтоб она отделяла имя файла от директории (затирала приставку "wave/" в названии файла). Можно например так:
Код:public final void PlaySoundAndSleep(Asset srcAsset, string soundFile, float volume, float minDistance, float maxDistance, GameObject srcObject, string att, float subtime) { World.PlaySound(srcAsset, soundFile, volume, minDistance, maxDistance, srcObject, att); string temp1[] = Str.Tokens(soundFile,"/"); Soup wavdb = srcAsset.GetConfigSoup().GetNamedSoup("extensions").GetNamedSoup("sound-length-base"); Sleep(wavdb.GetNamedTagAsFloat(temp1[temp1.size()-1], 10.0) - subtime); }
Я вот тут подумал, ведь супы позволяют в один тег класть несколько чисел. А как работать с таким "массивом" со стороны скриптов?
ну и соответственно потом дешифровывать кусочки через Str.ToInt и Str.ToFloat
Т.е. доставать как текст? Но при этом сами они хранятся как числа. Т.е. траинз сам переводит "массив" в "строку с запятыми"?
kemal, нет, хранятся они как текст, а его надо перевести в масив и выдернуть от туда числа.