我想在Vuforia中渲染對象時播放聲音剪輯。我在Vuforia的論壇中發現了一個solution,但它並不適合我,實際上Unity就是這樣。當模型在Vuforia Unity3D渲染時播放音頻
的解決方案包括在改變文件\資產\ Vuforia \腳本\ DefaultTrackableEventHandler.cs從Vuforia的源代碼:
private void OnTrackingFound()
{
Renderer[] rendererComponents = GetComponentsInChildren<Renderer>(true);
Collider[] colliderComponents = GetComponentsInChildren<Collider>(true);
// *** Additional Audio code
foreach (Transform child in transform)
{
child.audio.Play();
}
// Enable rendering:
foreach (Renderer component in rendererComponents)
{
component.enabled = true;
}
// Enable colliders:
foreach (Collider component in colliderComponents)
{
component.enabled = true;
}
Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found");
}
private void OnTrackingLost()
{
Renderer[] rendererComponents = GetComponentsInChildren<Renderer>(true);
Collider[] colliderComponents = GetComponentsInChildren<Collider>(true);
// *** Additional Audio code
foreach (Transform child in transform)
{
child.audio.Stop();
}
// Disable rendering:
foreach (Renderer component in rendererComponents)
{
component.enabled = false;
}
// Disable colliders:
foreach (Collider component in colliderComponents)
{
component.enabled = false;
}
Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost");
}
它只是增加child.audio.Play();OnTrackingFound() and child.audio.Stop();被叫做OnTrackingLost()
這在理論上應該工作,我添加音頻文件作爲圖像目標一個孩子,但因爲「Component.audio」已被棄用,我不得不改變它改爲GetComponent<AudioSource>()
。因此,代碼結束這樣的:
// *** Additional Audio code
foreach (Transform child in transform)
{
child.GetComponent<AudioSource>().Play();
}
而且
// *** Additional Audio code
foreach (Transform child in transform)
{
child.GetComponent<AudioSource>().Stop();
}
爲什麼不工作?
我用過GetComponent<AudioSource>()
錯了嗎?
是否有替代方案?