2017-08-07 81 views
-1

我正在使用tilengine作爲我正在製作的遊戲引擎的圖形引擎。當我調用一個函數,我做了,使一個精靈,我得到了以下錯誤:Tilengine C#綁定精靈加載問題

System.IO.FileNotFoundException: 'Unable to find the specified file.' 

下面是代碼:

public static void AddSprite(string TexturePath, double X, double Y) 
{ 
    ss = Spriteset.FromFile(TexturePath); 
    sp = SequencePack.FromFile(TexturePath + ".sqx"); 
    Sprite sprite = new Sprite(); 
    sprite.Setup(ss, TileFlags.None); 
    sprite.SetPosition((int)X, (int)Y); 
} 

和使用功能:

AddSprite("MOTB", 10, 10); 

我有與可執行文件相同的路徑。

+0

哪一行會引發異常?我很確定你發佈的代碼不會拋出異常,但是前兩種方法之一就是do。你有代碼可用嗎? –

+0

我正在爲tilengine使用c#包裝庫。這將拋出該豁免:public static Spriteset FromFile(string filename) { IntPtr retval = TLN_LoadSpriteset(filename);如果(retval!= IntPtr.Zero) 返回新的Spriteset(retval); else throw new FileNotFoundException(); } – Jakers1403

回答

0

所以這意味着該文件不存在。我建議你應該設置一個斷點並檢查路徑。

除此之外,你可以在它周圍添加一個try-catch塊(我不推薦)或者在AddSprite頂部添加一個檢查文件,當文件找不到時會執行錯誤處理。

public static void AddSprite(string TexturePath, double X, double Y) 
{ 
    if(File.Exists(TexturePath)) 
    { 
     ss = Spriteset.FromFile(TexturePath); 
     sp = SequencePack.FromFile(TexturePath + ".sqx"); 
     Sprite sprite = new Sprite(); 
     sprite.Setup(ss, TileFlags.None); 
     sprite.SetPosition((int)X, (int)Y); 
    } 
    else 
    { 
     //Do error handling here 
    } 
} 
+0

有趣的是,我試過你提供的代碼,File.Exists(TexturePath)返回true並執行代碼,我仍然得到相同的錯誤。這我不明白。這可能是圖書館本身造成的問題。如果你在這裏需要的是github上的完整代碼:https://github.com/jakers1403/OpenPlatEngine – Jakers1403

+0

我看到,這是一個綁定。你有沒有想過寫自己的系統。如果你有足夠的能力編寫遊戲引擎,這應該是其中一件事,我建議你應該這樣做。 –

+0

聽起來像我應該嘗試的東西! – Jakers1403