【问题标题】:NullException error. Help a noob out空异常错误。帮助一个菜鸟
【发布时间】:2013-01-25 14:52:20
【问题描述】:

谁能告诉我这里哪里出错了?我不断收到错误消息:

"ArgumentNullException 未处理。此方法不接受 null 对于这个参数。参数名称:歌曲"

我找不到解决办法。

Song BGmusic;
bool songstart = false;

protected override void LoadContent()
{
    currentgamescreen = Gamescreen.menuscreen;

    if (!songstart)
    {
        MediaPlayer.Play(BGmusic);
    }

    BGmusic = Game.Content.Load<Song>("audio/rockTheDragon");
}

【问题讨论】:

  • BGmusic 是否在任何地方初始化?
  • 还有一个改进:当你开始播放歌曲时,我也会将 bool songstart 设置为 true!
  • 在这段代码的上下文中,当MediaPlayer.Play 被调用时,BGmusic 是空的。为什么在播放文件之前不检查文件是否需要加载或已经加载。你的逻辑零意义。

标签: c# xna argumentnullexception


【解决方案1】:

好吧,你调用MediaPlayer.Play(BGmusic);,其中BGmusic 尚未初始化,所以为空。

可能让它像:

protected override void LoadContent()
{
    currentgamescreen = Gamescreen.menuscreen;

    if (!songstart)
    {
        BGmusic = Game.Content.Load<Song>("audio/rockTheDragon");
        MediaPlayer.Play(BGmusic);
    }
 }

会解决问题。

【讨论】:

  • 这很有效,非常感谢@Tigran。知道这会很简单,但我整天都在做这件事,我开始发疯了!目前正在处理:MediaPlayer.IsRepeating = true;
【解决方案2】:

您在为BGmusic 赋值之前调用了MediaPlayer.Play(BGmusic)。请尝试以下操作:

Song BGmusic;
bool songstart = false;

protected override void LoadContent()
{
    currentgamescreen = Gamescreen.menuscreen;

    BGmusic = Game.Content.Load<Song>("audio/rockTheDragon");

    if (!songstart)
    {
        MediaPlayer.Play(BGmusic);
    }
 }

【讨论】:

    【解决方案3】:

    移动

     BGmusic = Game.Content.Load<Song>("audio/rockTheDragon");
    

    到该方法的顶部

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-03
      • 2017-05-10
      相关资源
      最近更新 更多