c# - Unity 场景间音乐传输
问题描述
我正在创建的游戏是一个名为 Sunnyland 的 Brackeys 教程,为我自己带来了一些曲折和挑战。我面临的一个特殊问题是音乐功能。菜单有几个场景,每个都可以从主菜单访问,关卡场景和完成后的获胜场景。
我希望在菜单场景中播放一个音频文件,一个用于关卡,一个用于结尾。到目前为止,我已经解决了在不停止音频的情况下切换场景的问题,但是每次我回到主菜单时,音频都会再次播放,而之前的记录并没有停止。然后,当我按下“开始”按钮播放关卡时,它会随着关卡配乐继续播放。当然,它继续在获胜的场景中发挥作用。
总结一下:我现在的问题是:
- 在菜单部分中多次播放音频
- 菜单音频进入关卡和获胜场景(仅在激活多个记录时)这是我用来通过菜单场景播放音频的代码:
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();
}
}
解决方案
使用DontDestroyOnLoad(gameObject)
在音乐 GameObject 的 Awake() 函数中。
DontDestroyOnLoad()
在场景之间保留对象并且不破坏对象。当您进入另一个场景时,只需停止菜单音频?
推荐阅读
- c# - EntityFramework 包含但不保证存在
- reactjs - getByText 找不到元素
- calendar - 如何通过 URL 在 Google 日历中包含来宾和创建新活动的通知
- css - 如何停止`-webkit-background-clip:text`使文本变薄?
- javascript - 如何比较数字并返回最高值?
- linker - 如何在 STM32/platformio/arduino 上保留一个 Flash 内存扇区
- game-maker-studio-2 - GMS2 参数总是返回 undefined
- python - 如何从终止的 multiprocessing.Process 中抑制 stderr?
- python - 根据 Python 中类型对象的字符串表示检查对象的类型
- java - 如何在java中两次处理输入流