Unity3D 中的 AudioSource 无法播放 WAV 文件
AudioSource in Unity3D does not play WAV file
我在运行时单击时更新 Unity3D 中的 AudioSource。
我创建了一个 Cube 游戏对象。
当我单击多维数据集时,我将属性发送到我的 AudioSource。
注意: 这是为了最终播放通过管道分隔的 wav 文件字符串数组(存在于 Assets Audio 文件夹中)传入的许多其他 wav 文件。
所以我需要在每次单击事件时更新 AudioSource,每次它都会加载从数组中选择的新文件。
好的,Unity3D 编辑器显示我的 public 来自脚本的变量,并在运行时填充它们(在单击立方体时。)
我的 path 变量在 Unity3D 编辑器中完美显示。
但问题是虽然编辑器中的Audio Clip属性显示了橙色的小音频标志(好像something is there/loaded), 我从 Assets/Audio 文件夹中抓取的文件名总是空的。
没有播放,但我得到 没有错误!
以及属性 playOnAwake、volume、etc。所有人都通过我的脚本准确地向我展示了我表达他们要做什么。
注意: 在第一张图片中,路径 变量 正确指向 . wav 文件。
为什么我的 .wav 没有播放?
为什么 音频剪辑 文本框区域中没有出现 .wav 文件名?
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();
}
卡布拉的建议正是我所需要的。添加 "yield return www;" 迫使我使用 IEnumerator 并且奇迹般地,它开始工作了!
StartCoroutine(playMusic(tmpGameObject));
public IEnumerator playMusic(GameObject tmpGameObject){
/*Same code from before goes here!*/
}
我在运行时单击时更新 Unity3D 中的 AudioSource。
我创建了一个 Cube 游戏对象。
当我单击多维数据集时,我将属性发送到我的 AudioSource。
注意: 这是为了最终播放通过管道分隔的 wav 文件字符串数组(存在于 Assets Audio 文件夹中)传入的许多其他 wav 文件。
所以我需要在每次单击事件时更新 AudioSource,每次它都会加载从数组中选择的新文件。
好的,Unity3D 编辑器显示我的 public 来自脚本的变量,并在运行时填充它们(在单击立方体时。)
我的 path 变量在 Unity3D 编辑器中完美显示。
但问题是虽然编辑器中的Audio Clip属性显示了橙色的小音频标志(好像something is there/loaded), 我从 Assets/Audio 文件夹中抓取的文件名总是空的。
没有播放,但我得到 没有错误!
以及属性 playOnAwake、volume、etc。所有人都通过我的脚本准确地向我展示了我表达他们要做什么。
注意: 在第一张图片中,路径 变量 正确指向 . wav 文件。
为什么我的 .wav 没有播放?
为什么 音频剪辑 文本框区域中没有出现 .wav 文件名?
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();
}
卡布拉的建议正是我所需要的。添加 "yield return www;" 迫使我使用 IEnumerator 并且奇迹般地,它开始工作了!
StartCoroutine(playMusic(tmpGameObject));
public IEnumerator playMusic(GameObject tmpGameObject){
/*Same code from before goes here!*/
}