2014-09-18 85 views
-2

我完全喪失了爲什麼它不起作用。它所做的就是給我兩個圖像上無法打開的文件例外。有什麼建議?C#XNA例外:「無法打開文件」

protected override void LoadContent() 
    { 

     spriteBatch = new SpriteBatch(GraphicsDevice); 

     pixelTexture = Content.Load<Texture2D>("\\Images\\pixel"); 
     treeTexture = Content.Load<Texture2D>("\\images\\tree"); 

    } 
+2

您的內容項目的根目錄中是否有一個名爲Images的文件夾?該文件夾中的像素和樹圖像? – itsme86 2014-09-18 20:00:23

回答

2

您正在傳遞絕對文件路徑。

你的路應該像這個代替(注意在開始擴展和缺乏斜線):

pixelTexture = Content.Load<Texture2D>(@"Images\pixel.png"); 
treeTexture = Content.Load<Texture2D>(@"Images\tree.png"); 

一般情況下,解決資產負載問題,你需要仔細檢查:

  • 該資產確實是內容項目的一部分
  • 資產的屬性(構建類型等)設置正確(在解決方案資源管理器中選擇,然後按F4打開屬性)
  • ,在您的字符串的路徑相對於內容的根目錄磁盤的路徑一致,包括文件的擴展名
  • ,內容的根目錄下(Content.RootDirectory)設置爲正確的價值
+0

現在它給了我一個文件沒有發現異常。也許我有他們裝錯了?我所做的只是右鍵單擊內容管道,添加現有文件等。 – kingluke2222 2014-09-18 19:59:37

+0

@kingluke:您確定相對路徑和文件擴展名(我只猜PNG)是否正確?它是「圖像」還是「圖像」(大寫I)? (我不記得XNA是否區分大小寫,但不會傷害到正確。) – Cameron 2014-09-18 20:00:58

+0

+1但我不同意將OP傳入的絕對路徑稱爲格式錯誤。它們是絕對有效的絕對路徑;他們應該是相對的。此外,文件擴展名在加載內容時是可選的,並且僅用於解決歧義性。 – itsme86 2014-09-18 20:04:32

0

你唯一問題在於你傳遞的是絕對路徑而不是相對路徑。您只需在路徑字符串的開頭放置2個反斜槓。