Monogame - 在级别之间加载的问题

时间:2016-05-19 17:05:29

标签: c# .net xna monogame

由于我目前正在制作2D游戏,我试图让我的角色在各级之间加载,但我有一点问题。我的播放器开始的第一个级别加载到一个数组中,$newOrder = \Stripe\Order::create(array( "items" => generateItems($items), "customer" => $customer, "currency" => "sek", "metadata" => array("delivery_date" => $delivery_date), "coupon" => $couponId )); 类中没有任何问题,如下所示:

Game1

因此,为了能够加载第二级,我尝试创建一个名为secondLevel secondLev; // instance for secondLevel class Map map; // instance for Map class secondLev = new secondLevel(); // used in the Initialize() function protected override void LoadContent() { map.Generate(new int[,] { // 0 = no tile drawn // 3 = tile is drawn {0,0,0,0,0,0,0,0,0,0,}, {0,0,0,0,0,0,0,0,0,0,}, {0,0,0,0,0,0,0,0,0,0,}, {0,0,0,0,0,0,0,0,0,0,}, {3,3,3,3,3,3,3,3,3,3,}, {3,3,3,3,3,3,3,3,3,3,}, }, 57); // size } 的新类,它保存新的级别数组,并简单地在其secondLevel函数中加载数组,如下所示:

Load()

现在在我的class secondLevel { Map map; public void Initialize() { map = new Map(); } public void Load() { map.Generate(new int[,] { // 0 = no tile drawn // 3 = tile is drawn {0,0,0,0,0,0,0,0,0,0,}, {0,0,0,0,0,0,0,0,0,0,}, {3,3,3,3,3,3,3,3,3,3,}, {3,3,3,3,3,3,3,3,3,3,}, {3,3,3,3,3,3,3,3,3,3,}, {3,3,3,3,3,3,3,3,3,3,}, }, 57); // size } } 课程中,我放置了一个Game1来检查玩家是否与加载下一级别的尖峰相撞,如下所示:

if statement

但是当我的玩家与长钉相交时,我的游戏会冻结并收到错误消息:if (player.Bounds.Intersects(spike1.Bounds)) // if player intersects with spike { secondLev.Load(); }

我的问题是什么?

如果我错过了可以帮助您解决此问题的任何其他代码,请告诉我们!

2 个答案:

答案 0 :(得分:0)

由于缺乏背景,很难说究竟是什么导致了它。但是,如果在您提供的代码中发生异常,则可能无法初始化以下某个内容:secondLevsecondLev.map

if (player.Bounds.Intersects(spike1.Bounds)) // if player intersects with spike
{
    secondLev = new secondLevel();
    secondLev.Initialize();
    secondLev.Load();
}

如果这还没有解决问题,你应该看看堆栈跟踪是否有线索。

答案 1 :(得分:0)

您的secondLevel类缺少构造函数。这意味着永远不会调用Load()Initialize()方法。要修复此错误,请添加一个调用这些方法的构造函数。

示例:

public secondLevel(){
this.Initialize();
this.Load();
}

另一件事:你不应该为每个新关卡创建一个全新的课程。相反,你应该拥有一个具有Level级别所有属性的Level结构(或类,如果你真的想要)。然后,要创建新级别,只需执行Level secondLevel = new Level(map,size);