Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不使用'删除SoundEffectInstance;处置';在C#XNA中_C#_Xna_Dispose_Soundeffectinstance - Fatal编程技术网

不使用'删除SoundEffectInstance;处置';在C#XNA中

不使用'删除SoundEffectInstance;处置';在C#XNA中,c#,xna,dispose,soundeffectinstance,C#,Xna,Dispose,Soundeffectinstance,我遇到了一个小问题。当我重新启动游戏时(通过运行我自己的初始化方法),我可以成功地重新加载我的所有对象/变量。但是在创建新实例时,我使用的初始SoundEffectInstance将继续播放。这会导致同时播放同一音乐的多个实例 我试图实现的是在创建新实例时摆脱第一个实例的方法 instance.Dispose()无法使用,因为这意味着我无法重新初始化声音 我尝试使用列表来解决这个问题(在重新启动游戏之前删除实例),但似乎我无法从列表中CreateInstance(),限制我从一开始就初始化声音

我遇到了一个小问题。当我重新启动游戏时(通过运行我自己的初始化方法),我可以成功地重新加载我的所有对象/变量。但是在创建新实例时,我使用的初始
SoundEffectInstance
将继续播放。这会导致同时播放同一音乐的多个实例

我试图实现的是在创建新实例时摆脱第一个实例的方法

instance.Dispose()无法使用,因为这意味着我无法重新初始化声音

我尝试使用列表来解决这个问题(在重新启动游戏之前删除实例),但似乎我无法从列表中
CreateInstance()
,限制我从一开始就初始化声音


阵列似乎也无法提供解决方案。有什么想法吗?

首先,您可能不应该在音乐中使用SoundEffectInstance-这会导致整个歌曲未经压缩加载到RAM中-相对于使用音乐从磁盘流式播放MP3/WMA,这会占用大量空间

如果要处理所有内容,则应卸载包含所有内容的ContentManager。然后您可以重新创建内容-从磁盘重新加载它需要一些时间,但如果您想要的是一组干净的内容,那么您将拥有一组干净的内容。请记住,SoundEffectInstance包含非托管资源,因此“删除”它的唯一方法是处置它或卸载其ContentManager

如果您不想这样做,那么您应该保留对内容的引用,然后您可以手动执行诸如停止:


您应该使用mediaplayer.play()来播放歌曲,而不是SoundEffectInstance,然后 您可以使用if语句,表示如果发生了X,那么mediaplayer.play() 其他的 mediaplayer.stop();或
mediaplayer.pause()

在游戏重新启动时重新启动soundeffectinstance,完全停止并丢弃soundeffectinstance怎么样?这样,在X个时间量之后,垃圾回收器会来把它捡起来,这不再是一个问题。@Bjarke:完全丢弃它,你的意思是
dispose()
?还是说使用
unloadcontent()
方法?