У меня проблема. Я использую sqlite для хранения звуков. Я получаю звук от него в байте []. Затем преобразовать байт [], чтобы плавать []:создать AudioClip из байт []
private float[] ConvertByteToFloat(byte[] array)
{
float[] floatArr = new float[array.Length/4];
for (int i = 0; i < floatArr.Length; i++)
{
if (BitConverter.IsLittleEndian)
Array.Reverse(array, i * 4, 4);
floatArr[i] = BitConverter.ToSingle(array, i * 4);
}
return floatArr;
}
float[] f = ConvertByteToFloat(bytes);
Затем создайте AudioClip:
AudioClip audioClip = AudioClip.Create("testSound", f.Length, 1, 44100, false, false);
audioClip.SetData(f, 0);
а затем воспроизвести его
AudioSource.PlayClipAtPoint(audioClip, new Vector3(100, 100, 0), 1.0f);
Но результат шум :(
Может быть, другой способ поможет вам определить источник проблемы? Если бы я отлаживал это, я бы создал обратное преобразование из массива audioClip.GetData в байты. Если вы загрузите тот же самый образец в Unity и используйте это обратное преобразование, вы можете получить намек на то, что здесь не так. –
Спасибо, я хотел попробовать) Я сделаю это. Возможно, есть другое решение - сохранить байты [] в файл, а затем использовать экземпляр WWW для загрузки AudioClip, но мне это не нравится :) – Igor