我在运行时单击时更新Unity3D中的AudioSource .
我创建了一个Cube游戏对象 .
当我单击立方体时,我将属性发送到我的AudioSource .
NOTE: 这最终会播放许多其他wav文件,这些文件通过管道分隔的wav文件(存在于Assets Audio文件夹中)的字符串数组传入 .
所以我需要用每个CLICK EVENT更新AudioSource,每次加载从阵列中选择的新文件 .
好的,Unity3D编辑器从脚本中显示我的公共变量,并在运行时填充它们(单击多维数据集时) .
我的 path 变量在Unity3D编辑器中完美显示 .
但问题是虽然编辑器中的 Audio Clip 属性显示了小的橙色音频徽标(好像有什么东西存在/已加载),但我从Assets / Audio文件夹中抓取的文件的名称始终为空 .
什么都没玩,但我得到 no errors !
而playOnAwake,音量等属性都通过我的剧本向我展示了我的表达方式 .
NOTE: 在第一个图像中, path 变量正确指向.wav文件 .
为什么我的.wav没有玩?
为什么.wav文件名不出现在 Audio Clip 文本框区域?
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 回答
Cabbra的建议就是我所需要的 . 添加“收益率返回www;”强迫我使用IEnumerator,神奇地,它开始工作!