C#-统一-两个对象碰撞时的音频,不工作:(

C#-统一-两个对象碰撞时的音频,不工作:(,c#,unity3d,C#,Unity3d,我遇到了一个问题。我正在创建一个小游戏项目,其中一个球从鬼魂中逃脱 我正试图写一个剧本,当球与鬼魂相撞时播放“邪恶的笑声” 当我将音频碰撞代码添加到脚本中时,另一个让玩家进入“游戏结束”场景的功能停止工作 有人知道问题出在哪里吗? 提前感谢!(下面的代码)这是因为只要您调用SceneManager.LoadScene当前场景(包含您的播放器、AI和音频源)就会丢失并替换为新场景。向场景加载添加延迟应该可以做到这一点,您可以使用它(或者如果您更高级) 谢谢,伙计!那应该会有帮助的!很高兴能帮上忙。

我遇到了一个问题。我正在创建一个小游戏项目,其中一个球从鬼魂中逃脱

我正试图写一个剧本,当球与鬼魂相撞时播放“邪恶的笑声”

当我将音频碰撞代码添加到脚本中时,另一个让玩家进入“游戏结束”场景的功能停止工作

有人知道问题出在哪里吗?
提前感谢!(下面的代码)这是因为只要您调用
SceneManager.LoadScene
当前场景(包含您的播放器、AI和音频源)就会丢失并替换为新场景。向场景加载添加延迟应该可以做到这一点,您可以使用它(或者如果您更高级)


谢谢,伙计!那应该会有帮助的!很高兴能帮上忙。
public class GhostScript : MonoBehaviour

public AudioSource ghostCollision; //this is the collision sound reference

public GameObject target;   //this is the player or a reference for him
UnityEngine.AI.NavMeshAgent agent;

// Start is called before the first frame update
void Start()
{
    ghostCollision = GetComponent<AudioSource>();

    agent = GetComponent<UnityEngine.AI.NavMeshAgent>();
    if (target == null) { 
        target = GameObject.FindGameObjectWithTag("Player");
    }

}

// Update is called once per frame
void Update()
{
    agent.destination = target.transform.position;
}

public void OnCollisionEnter(Collision collision){
    if (collision.gameObject.tag == "Player"){

        ghostCollision.Play();
        SceneManager.LoadScene("menu");
    }
}
private void OnCollisionEnter(Collision other)
{
   if (other.gameObject.tag == "Player")
   {
      ghostCollision.Play();

      // Invokes the function after the AudioClip is over
      Invoke("LoadScene", ghostCollision.clip.length);
   }
}

private void LoadScene()
{
   SceneManager.LoadScene("your-scene-name");
}