我为我的第一个简单游戏混淆了一些教程。
我在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();
}
}
我尝试在音频源检查器中增加最大距离。
答案 0 :(得分:1)
你应该检查这三件事:
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
附加到另一个不会被停用的空GameObject。