同一个 GameObject 两个 AudioSources 不播放他们的 AudioClips - Unity
Same GameObject Two AudioSources Not Playing Their AudioClips - Unity
我正在开发 3d 亚军类游戏,所以我在 Player GameObject 中附加了两个 AudioSources 组件:
- 用于播放游戏音乐的 AudioSource
- 播放玩家碰撞音效的AudioSource
在同一个Player GameObject上,我分配了两个AudioSources来播放这两种声音,但目前只播放GamePlay音乐,Player碰撞障碍物时不会播放碰撞声音。
两个 AudioSources 都有其指定的 AudioClip。
关于与障碍物的碰撞时间,我是这样播放碰撞声音的:
void OnCollisionEnter (Collision other)
{
if (other.transform.CompareTag (GameConstants.TAG_OBSTACLE)) {
Vector3 splashEffectPos = groundCheck.position;
if (splashEffectPos.y < 0.05f)
splashEffectPos.y = 0.05f;
// stop game music
if (SoundManager.Instance.EnableSound) {
gameSoundAS.Play ();
gameMusicAS.Stop ();
// gameSoundAS.PlayOneShot (ballCollisionClip);
}
GameObject splash = Instantiate (splashEffectPrefab, splashEffectPos, Quaternion.identity);
splash.transform.SetParent (GameController.Instance.transform);
GameController.Instance.GameOver ();
gameObject.SetActive (false);
}
}
GamePlay 音乐正常播放,当它与障碍物碰撞时停止,但玩家碰撞声音不播放。
好的,我自己解决了这个问题。如果 GameObject 被禁用,那么它的 AudioSources 将无法播放。
在上面的 OnCollisionEnter
方法中,我禁用了我的 Player GameObject,因此 AudioSource 不会产生任何声音。
我正在开发 3d 亚军类游戏,所以我在 Player GameObject 中附加了两个 AudioSources 组件:
- 用于播放游戏音乐的 AudioSource
- 播放玩家碰撞音效的AudioSource
在同一个Player GameObject上,我分配了两个AudioSources来播放这两种声音,但目前只播放GamePlay音乐,Player碰撞障碍物时不会播放碰撞声音。
两个 AudioSources 都有其指定的 AudioClip。
关于与障碍物的碰撞时间,我是这样播放碰撞声音的:
void OnCollisionEnter (Collision other)
{
if (other.transform.CompareTag (GameConstants.TAG_OBSTACLE)) {
Vector3 splashEffectPos = groundCheck.position;
if (splashEffectPos.y < 0.05f)
splashEffectPos.y = 0.05f;
// stop game music
if (SoundManager.Instance.EnableSound) {
gameSoundAS.Play ();
gameMusicAS.Stop ();
// gameSoundAS.PlayOneShot (ballCollisionClip);
}
GameObject splash = Instantiate (splashEffectPrefab, splashEffectPos, Quaternion.identity);
splash.transform.SetParent (GameController.Instance.transform);
GameController.Instance.GameOver ();
gameObject.SetActive (false);
}
}
GamePlay 音乐正常播放,当它与障碍物碰撞时停止,但玩家碰撞声音不播放。
好的,我自己解决了这个问题。如果 GameObject 被禁用,那么它的 AudioSources 将无法播放。
在上面的 OnCollisionEnter
方法中,我禁用了我的 Player GameObject,因此 AudioSource 不会产生任何声音。