我當時非常困惑。圖片先加載,那不是? (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