Unity3D中的AudioSource不播放WAV文件

时间:2016-07-07 17:30:35

标签: c# unity3d wav unity3d-editor

单击时,我在运行时更新Unity3D中的AudioSource。

我创建了一个Cube游戏对象。

当我点击立方体时,我将属性发送到我的AudioSource。

注意:这是为了最终播放许多其他wav文件,这些文件通过管道分隔的wav文件(存在于Assets Audio文件夹中)的字符串数组传入。

所以我需要用每个CLICK EVENT更新AudioSource,每次加载从阵列中选择的新文件。

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

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

但问题是,虽然编辑器中的音频剪辑 属性显示了小橙色音频徽标(好像有某些东西/已加载),但该文件的名称我从Assets / Audio文件夹中抓取的内容总是空的。

什么都没有播放,但我没有错误

属性 playOnAwake volume etc 。所有这些都向我展示了我通过我的剧本表达他们的目的。

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

为什么我的.wav没有玩?

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

My publicly declared variables in the script.

My created Audio Source.

public Color clickColor;
public Color releaseColor;
public int clickcount = 0;    
public WWW www;
public AudioClip myAudioClip;
public string path;

void CubeClicked(GameObject tmpGameObject)
{
    // CLICK COUNT
    clickcount++;

    // CLICK COLOR
    tmpGameObject.GetComponent<Renderer>().materials[0].color = clickColor; 

    // IS TRIGGER
    tmpGameObject.GetComponent<Collider>().isTrigger = true; 

    //AUDIO
    path = "file://" + Application.dataPath.Substring(0, Application.dataPath.LastIndexOf("/")) + "/Assets/Audio/JetEngine.wav";
    www = new WWW(path);
    myAudioClip = www.audioClip;

    tmpGameObject.GetComponent<AudioSource>().clip = myAudioClip;
    tmpGameObject.GetComponent<AudioSource>().playOnAwake = false;
    tmpGameObject.GetComponent<AudioSource>().volume = 0.999f;
    tmpGameObject.GetComponent<AudioSource>().Play();

}

1 个答案:

答案 0 :(得分:2)

Cabbra的建议是我所需要的。添加“收益率返回www;”强迫我使用IEnumerator并神奇地开始工作!

StartCoroutine(playMusic(tmpGameObject));  

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