1

しばらくの間、この問題の助けが必要です。Visual C# Express 2010 と monogame 2.5 でコーディングして、Windows でゲームを作成し、Texture2D を使用してゲーム用の画像を読み込み、コンパイルします。しかし、プロジェクトをコンパイルしようとすると、このエラーが発生します。オブジェクト参照がオブジェクト インスタンスに設定されていません。

    private static Game1 game;

    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        game = new Game1();
        game.Run();//This line gives the warning
    }
}

私はこのコードを試します

Game1 game = new Game1();
game.Run();

うまくいきませんでしたが、それでもこのエラーが発生します。

オブジェクト参照がオブジェクト インスタンスに設定されていません

何か見逃していましたか、これを解決するために何かをインストールする必要がありますか?

4

2 に答える 2

1

あなたが提供した情報から、MonoGame のRunメソッド内から例外がスローされているようです。

これを修正するための最初のステップは、原因に関する詳細情報を取得することです。これを行う最善の方法は、1 つのソリューションでプロジェクトと共にsource から MonoGame をビルドすることです。そうすれば、例外がスローされると、MonoGame 内のエラーが発生した正確な場所でデバッガーが中断し、デバッガーを使用して問題の原因を特定できます。

ソースを必要とせずに実行できる次善の策は、例外の詳細を表示してスタック トレースを取得することです。これにより、少なくともどのメソッドが例外の原因であるかがわかります。そこからソースコードを調べて、追加情報が提供されているかどうかを確認できます。

(この特定の例外、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」については、明示的にスローされるのではなく、.NET フレームワークによって (おそらく MonoGame のバグが原因で) スローされるため、スタック トレースはあまり役に立ちません。 (たとえば) API の使用方法のエラーにより、MonoGame 自体によって。)


原因を推測GraphicsDeviceManagerする必要がある場合 (実際に推測します)、クラスのコンストラクターで を正しく設定していないと推測しますGame1(コンストラクターが の前にどのように実行されるかに注意してくださいRun)。そして、その状況を検出して有益な例外をスローする代わりに、MonoGame はクラッシュするまで続行します。

ただし、これは他のすべてが正常に機能していることを前提としています。また、MonoGame が何らかの理由でグラフィックス デバイスを初期化できないなどの問題が発生する可能性もあります。または、他の多くのこと、本当に...

(別のオプションとして、XNA に対してゲームをビルドしてみて、どのような結果が得られるかを確認することもできます。)

于 2013-08-13T09:03:31.547 に答える
0

私のバージョンの Monogame では、既定のプロジェクトは常に次のように始まります。

 static void Main()
        {
            using (var myGame = new Game1())
                myGame.Run();
        }

これはうまくいくようです。

于 2015-03-10T16:31:12.583 に答える