在不同场景下继续播放音频在我的Unity项目中,有不同的菜单,每个菜单都是不同的场景。每个场景都有用于控制音乐的按钮。publicvoidmusicToggle(GameObjectOff){if(PlayerPrefs.GetInt("Music")==1){musicPlayer.Stop();Debug.Log("停止2");PlayerPrefs.SetInt("音乐",0);Off.SetActive(true);}else{musicPlayer.Play();Debug.Log("播放2");PlayerPrefs.SetInt("音乐",1);Off.SetActive(假);这是我的音乐Toogle功能。在每个场景中,音乐都会重新开始,在每个场景中,当我想打开/关闭音乐时,我单击一个部署此代码的按钮。但是,我不希望音乐在每次场景更改时重新开始,我希望它恢复并且我希望能够控制每个场景中的音乐(开/关)。我怎样才能做到这一点?我的回答假设musicPlayer变量是一个AudioSource。有两种方法可以做到这一点:1.不使用musicPlayer.Stop来停止音乐,而是使用musicPlayer.Pause();然后暂停音乐,然后使用musicPlayer.UnPause();取消暂停这将确保音乐恢复而不是重新开始。在这种情况下,您使用DontDestroyOnLoad(gameObject);每个都带有AudioSource,这样当您在下一个场景中时它们就不会被破坏。2.存储AudioSource.time值。下次加载它,然后在播放之前将其应用到AudioSource。您可以使用PlayerPrefs执行此操作,但我更喜欢使用json和DataSaver类进行存储。保存:AudioSourcemusicPlayer;AudioStatusaStat=newAudioStatus(musicPlayer.time);//将AudioStatus中的数据保存到名为audioStat_1的文件中DataSaver.saveData(aStat,"audioStat_1");加载:AudioSourcemusicPlayer;AudioStatusloadData=DataSaver.loadData("audioStat_1");如果(loadedData==null){返回;}musicPlayer.time=loadedData.audioTime;musicPlayer.Play();您的AudioStatus类:[Serializable]publicclassAudioStatus{publicfloataudioTime;publicAudioStatus(floatcurrentTime){audioTime=currentTime;您将需要创建一个单例类并在第一个场景中对其进行实例化,然后您可以将其传递给各个场景,如本统一答案中所述:http://answers.unity3d.com/answers/12176/view。html以上就是C#学习教程:不同场景继续播放音频分享的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
