这次过程太过艰辛,在网上搜了很多,然而一个能用的都没有,于是自己硬生生的试了出来,就讲结论吧。
要做的事情是用脚本读取音频文件,其实读取音频文件用GUI是非常简单的,可是,HRTF的数据库动辄几百的音频文件,若要手工,画面太美,而且如果都放在场景之中,很容易乱套,所以还是当做资源文件调用比较合适。
(我目前知道的)Unity 提供了三个读取资源的函数,分别是Resources.Load, Resources.LoadAll, Resources.LoadAssetAtPath。前两个分别是读取Assets/Resources文件夹里面指定文件和文件夹,第三个可以读其他文件夹文件夹,我需要是读取指定文件夹的所有文件,所以使用Resources.LoadAll。我将所有的wav文件都保存在了Assets/Resources/HrtfData文件夹下。
Object[] objs = Resources.LoadAll ("HrtfData");
Debug.Log (">>1 objs = " + objs + "\n");
Object obj0 = objs [0];
Debug.Log (">>2 obj0 = " + obj0 + "\n");
AudioClip aud0 = (AudioClip)objs [0];
Debug.Log (">>3 aud0 = " + aud0 + "\n>>3 " + aud0.samples + " samples * " + aud0.channels + " channels");

本文记录了在Unity中通过脚本使用Resources.LoadAll读取音频资源的过程。作者面临大量音频文件需要管理的问题,发现直接在场景中添加不便,故选择以资源文件方式调用。在尝试了Unity的资源读取函数后,选择了Resources.LoadAll来读取Assets/Resources/HrtfData文件夹下的所有wav文件。在Debug中,需要将返回的对象强制转换为AudioClip类型才能进一步操作,如使用AudioClip.GetData()获取样本数据。作者提到这个过程相对艰难,并表达了对Matlab便捷性的怀念。
最低0.47元/天 解锁文章
2164

被折叠的 条评论
为什么被折叠?



