从脚本播放音频源

Play audio source from script

我为我的第一个简单游戏混杂了一些教程。

我的游戏对象下有 2 个音频源用作角色。他们都通过 "play on awake" 玩。只有一个从脚本中播放。另一个要么根本不发声,要么在从脚本调用时发出几声咔嗒声。

我正在使用最新的Visual Studio编写脚本

这是我的脚本中无法正常工作的部分(我遗漏了很多玩家移动脚本)。

第 7 行的音频变量,第 33 行的音频播放

using UnityEngine;

public class PlayerMovement : MonoBehaviour
{

public Rigidbody rb;

public AudioSource AudioFall;

public GameObject Fall;



if(rb.position.y < -1f)
{
AudioFall.Play();
Fall.SetActive(true);
FindObjectOfType<GameManager>().GameOver();
}

这是单独的 .cs 中的一部分,它正在工作

第 7 行的音频变量,第 17 行的音频播放

using UnityEngine;

public class playerCollision : MonoBehaviour
{
public PlayerMovement movement;

public AudioSource AudioCrash;

public GameObject Crash;

void OnCollisionEnter(Collision collisionInfo)
{
    if (collisionInfo.collider.tag == "Obstacle")
    {
        FindObjectOfType<PlayerMovement>().rb.isKinematic = true;
        movement.enabled = false;
        AudioCrash.Play();
        Crash.SetActive(true);
        FindObjectOfType<GameManager>().GameOver();
    }

}

我尝试增加音频源检查器中的最大距离。

你应该检查这三件事:

1。看起来你的音频每帧都在播放,而 if(rb.position.y < -1f)true,因为 Debug.Log 被多次调用.播放前先检查是否正在播放:

if(rb.position.y < -1f)
{
    //PLAY ONLY IF AUDIO IS NOT PLAYING
    if (!AudioFall.isPlaying)
    {
        AudioFall.Play();
    }
    Fall.SetActive(true);
    FindObjectOfType<GameManager>().GameOver();
}

2。如果不是这种情况,请验证音频剪辑是否已分配到编辑器中 AudioFall Audiosource 的剪辑插槽。

3。最后,如果 Fall GameObject 与音频附加到的 GameObject 相同,则音频将无法播放,因为它已被设置不活跃。检查它是否在任何地方被设置为不活动。您必须将 AudioFall Audiosource 附加到另一个不会被停用的空游戏对象。