2

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

我的游戏对象下有 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();
    }

}

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

4

1 回答 1

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游戏对象与音频附加到的游戏对象相同,则音频将不会播放,因为它被设置为非活动状态。检查它是否在任何地方都设置为非活动状态。您必须将 AudioFall 附加Audiosource到另一个不会被停用的空 GameObject。

于 2017-06-27T01:16:08.763 回答