はじめに 先日、uLipSync の WebGL ビルドでランタイム生成した際、音声は再生されるもののリップシンクしない、という報告を受けて調査をしてみました。 tips.hecomi.com 原因解説 原因としては AudioSource.PlayOneShot() の利用でした。こちらを詳しく解説していきます。 非 WebGL 向けビルドでは、MonoBehaviour.OnAudioFilterRead() や AudioSource.GetOutputData() といった API を通じて、そのタイミングで再生している音のバッファを取得することが出来ます。しかしながら、これらは一つ前の記事で触れましたが Unity のサウンド周りの仕組み及び WebGL の制約により使用することが出来ません。代わりに、WebGL ビルドでは、データから直接バッファ取得可能な AudioClip.