从脚本播放音频源

时间:2017-06-27 00:27:02

标签: c# audio unity3d visual-studio-2017 soundeffect

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

我在GameObject下有2个音频源,用作角色。他们都通过“清醒时玩”来玩。只有一个播放脚本。另一个要么根本不发声,要么从脚本调用时点击几下。

我正在使用最新的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 个答案:

答案 0 :(得分:1)

你应该检查这三件事:

1 。由于多次调用if(rb.position.y < -1f)trueDebug.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附加到另一个不会被停用的空GameObject。