我当时非常困惑。图片先加载,那不是? (XNA)
我有以下类别:(类的只是一部分):
public class GUIWindow
{
#region Static Fields
//The standard image for windows.
public static IngameImage StandardBackgroundImage;
#endregion
}
IngameImage只是我自己的一个类,但实际上它包含一个Texture2D(和其他一些东西)。 在另一个类中,我通过反序列化XML文件来加载GUIButton的列表。
public static GUI Initializazion(string pXMLPath, ContentManager pConMan)
{
GUI myGUI = pConMan.Load<GUI>(pXMLPath);
GUIWindow.StandardBackgroundImage = new
IngameImage(pConMan.Load<Texture2D>(myGUI.WindowStandardBackgroundImagePath),
Vector2.Zero, 1024, 600, 1, 0, Color.White, 1.0f,
true, false, false);
System.Console.WriteLine("Image loaded? " +
(GUIWindow.StandardBackgroundImage.ImageStrip != null));
myGUI.Windows = pConMan.Load<List<GUIWindow>>(myGUI.GUIFormatXMLPath);
System.Console.WriteLine("Windows loaded");
return myGUI;
}
在这里这条线:的System.Console.WriteLine( “图像加载?” +
(GUIWindow.StandardBackgroundImage.ImageStrip = NULL)!); 打印“true”。 要加载GUIWindows我需要一个“空”构造函数,它看起来像这样:
public GUIWindow()
{
Name = "";
Buttons = new List<Button>();
ImagePath = "";
System.Console.WriteLine("Image loaded? (In win) " +
(GUIWindow.StandardBackgroundImage.ImageStrip != null));
//Image = new IngameImage(StandardBackgroundImage);
//System.Console.WriteLine(
//Image.IsActive = false;
SelectedButton = null;
IsActive = false;
}
正如你所看到的,我在构造函数中注释行了。因为:否则这会崩溃。 这里行System.Console.WriteLine(“图片加载?(赢))”+ (GUIWindow.StandardBackgroundImage.ImageStrip!= null)); 不打印任何东西,它只是崩溃与下面的ErrorMessage:
建设内容扔的NullReferenceException:未将对象引用设置到对象的实例。
为什么会发生这种情况? 在程序想要加载列表之前,它会打印“true”。但是在构造函数中,所以在加载列表时打印出“false”。 任何人都可以告诉我为什么发生这种情况,以及如何解决它?
使用你的调试器。 NullReferenceException意味着你试图用一个设置为null的变量来做某件事。 – doppelgreener
您是否使用MSDN的[游戏状态管理](http://create.msdn.com/en-US/education/catalog/sample/game_state_management)代码? –
在构建内容时抛出异常,显然,在运行应用程序时应该是一个线索。为什么在构建内容期间运行此代码?你想将哪些内容编译成可能导致它运行的内容? – 2011-11-16 01:00:12