首页 > 解决方案 > Unity 场景间音乐传输

问题描述

我正在创建的游戏是一个名为 Sunnyland 的 Brackeys 教程,为我自己带来了一些曲折和挑战。我面临的一个特殊问题是音乐功能。菜单有几个场景,每个都可以从主菜单访问,关卡场景和完成后的获胜场景。

我希望在菜单场景中播放一个音频文件,一个用于关卡,一个用于结尾。到目前为止,我已经解决了在不停止音频的情况下切换场景的问题,但是每次我回到主菜单时,音频都会再次播放,而之前的记录并没有停止。然后,当我按下“开始”按钮播放关卡时,它会随着关卡配乐继续播放。当然,它继续在获胜的场景中发挥作用。

总结一下:我现在的问题是:

  1. 在菜单部分中多次播放音频
  2. 菜单音频进入关卡和获胜场景(仅在激活多个记录时)这是我用来通过菜单场景播放音频的代码:
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.SceneManagement;
public class MusicControl : MonoBehaviour
{
    private AudioSource music;

    private void Awake()
    {
        DontDestroyOnLoad(transform.gameObject);
        music = GetComponent<AudioSource>();
    }

    public void PlayMusic()
    {
        if (music.isPlaying) return;
        {
            music.Play();
        }
    }

    public void StopMusic()
    {
        music.Stop();
    }
}

标签: c#unity3d

解决方案


使用DontDestroyOnLoad(gameObject)在音乐 GameObject 的 Awake() 函数中。 DontDestroyOnLoad()在场景之间保留对象并且不破坏对象。当您进入另一个场景时,只需停止菜单音频?


推荐阅读