从脚本播放音频源
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
附加到另一个不会被停用的空游戏对象。
我为我的第一个简单游戏混杂了一些教程。
我的游戏对象下有 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
附加到另一个不会被停用的空游戏对象。