2017-08-07 5 views
-1

私が作っているゲームエンジンのグラフィックスエンジンにtilengineを使用しています。Tilengine C#bindingsスプライトロードの問題

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); 

ここ

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

コードです:私は、関数を呼び出すとき、私はそれは私が次のエラーを取得するスプライトを作る作ら実行可能ファイルと同じパスにスプライトがあります。

+0

どのラインが例外をスローしますか?あなたが投稿したコードが例外をスローしないと確信していますが、最初の2つのメソッドのうちの1つがdoと呼ばれています。利用可能なコードはありますか? –

+0

私はtilengine用のC#ラッパーライブラリを使用しています。これにより、例外がスローされます。public static Spriteset FromFile(string filename) { IntPtr retval = TLN_LoadSpriteset(filename); if(retval!= IntPtr.Zero) 新しいSpriteset(retval)を返します。 else 新しい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