Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity3D中的音频源不播放WAV文件_C#_Unity3d_Wav_Unity3d Editor - Fatal编程技术网

C# Unity3D中的音频源不播放WAV文件

C# Unity3D中的音频源不播放WAV文件,c#,unity3d,wav,unity3d-editor,C#,Unity3d,Wav,Unity3d Editor,当我单击时,我正在运行时更新Unity3D中的音频源 我创建了一个立方体游戏对象 单击多维数据集时,我会将属性发送到音频源 注意:这将最终播放许多其他wav文件,这些文件是通过管道分隔的wav文件(存在于资产音频文件夹中)的字符串数组传入的 因此,我需要使用每次单击事件更新AudioSource,每次它都会加载从阵列中选择的新文件 好的,Unity3D编辑器显示脚本中的公共变量,并在运行时(单击多维数据集时)填充它们 我的路径变量在Unity3D编辑器中完美显示 但问题是,尽管编辑器中的音频剪辑

当我单击时,我正在运行时更新Unity3D中的音频源

我创建了一个立方体游戏对象

单击多维数据集时,我会将属性发送到音频源

注意:这将最终播放许多其他wav文件,这些文件是通过管道分隔的wav文件(存在于资产音频文件夹中)的字符串数组传入的

因此,我需要使用每次单击事件更新AudioSource,每次它都会加载从阵列中选择的新文件

好的,Unity3D编辑器显示脚本中的公共变量,并在运行时(单击多维数据集时)填充它们

我的路径变量在Unity3D编辑器中完美显示

但问题是,尽管编辑器中的音频剪辑属性显示了小的橙色音频徽标(好像有东西在那里/加载了),但我从资产/音频文件夹中获取的文件名始终为空

没有播放,但我没有出错

playOnAwake、volume等属性都精确地显示了我通过脚本表达它们的功能

注意:在第一幅图像中,路径变量正确指向.wav文件

为什么我的.wav没有播放

为什么.wav文件名不出现在音频剪辑的文本框区域中

公共颜色点击颜色;
公共色彩发布;
公共int clickcount=0;
公共网站;
公共音频剪辑myAudioClip;
公共字符串路径;
虚空立方体图标(游戏对象tmpGameObject)
{
//点击计数
点击计数++;
//单击颜色
tmpGameObject.GetComponent().materials[0]。颜色=单击颜色;
//是触发器
tmpGameObject.GetComponent().isTrigger=true;
//音频
path=“file://”+Application.dataPath.Substring(0,Application.dataPath.LastIndexOf(“/”)+“/Assets/Audio/JetEngine.wav”;
www=新www(路径);
myAudioClip=www.audioClip;
tmpGameObject.GetComponent().clip=myAudioClip;
tmpGameObject.GetComponent().playOnAwake=false;
tmpGameObject.GetComponent().volume=0.999f;
tmpGameObject.GetComponent().Play();
}

卡布拉的建议正是我所需要的。添加“收益回报www;”迫使我使用IEnumerator,神奇地,它开始工作了

StartCoroutine(playMusic(tmpGameObject));  

public IEnumerator playMusic(GameObject tmpGameObject){
    /*Same code from before goes here!*/
}

您是否检查了音频列表器?请尝试这样做:yield return www;在新的WWW()之后。另外,请检查您的音量是否已启用。您的建议使我走上了正确的轨道。现在可以用了。:)你不能这样做,因为他发表了评论,而不是发布了答案。回答你自己的问题很好,你可以在48小时后接受。幸运的是,这几乎没有什么魔力。WWW是一个后台任务。如果您直接请求音频剪辑,它只是还没有下载,因此您有效地将音频源的剪辑设置为空。你必须等待它完成。
StartCoroutine(playMusic(tmpGameObject));  

public IEnumerator playMusic(GameObject tmpGameObject){
    /*Same code from before goes here!*/
}