我想在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>()
错了吗?
是否有替代方案?