none
インスタンスについて RRS feed

  • 質問

  • こんにちは。

    私はXNAでwindows用で画像を表示させるプログラムを打ちました。

    spriteBatch.Begin(SpriteBlendMode.None);
    spriteBatch.Draw(texture, new Vector2(0.0f, 0.0f), Color.White);
    spriteBatch.Draw(texture, new Vector2(0.0f, 200.0f), Color.Green);
    spriteBatch.Draw(texture, new Vector2(0.0f, 400.0f), new Color(0x80, 0xFF, 0x80));
    spriteBatch.End();

    これをprotected override void Draw(GameTime gameTime)内で使用したら表示されるのですが自作のpublic int MISA()で使ったら

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

    とエラーが出てしまいます。

    C#初心者でもあり困っています。

    よろしくお願いいたします。

    2012年5月28日 11:10

回答

すべての返信

  • デバッグしてください。
    その例外が出た、止まった時点で付近で使用している変数が null になっているはずです。
    その変数を特定し、なぜその変数が null になるかを調べてください。

    // 初心者という言葉は免罪符にもならないので、使用せず、どういったことがわかって
    // どういったことがわからないかを具体的に説明するべし。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。

    2012年5月28日 13:37
    モデレータ
  • ありがとうございます。デバック中にエラーが出ます。

    どの変数も。Drawメソッドでは表示できるんです。それをそのまま自作クラスに持ってきたらspriteBatch.Begin(SpriteBlendMode.None);にまずはエラーが出ます。

    全くどうすればいいのかわかりません。オブジェクトインスタンスに設定されていない。というのも出てしまいます。

    分かりにくくて申し訳有りません。

    よろしくお願いします。

    2012年5月28日 16:01
  • 連投申し訳ありません。

    一応C言語はやってたのですがC#は全然違うものとなっていまして混乱しています。

    私がしたいのはXNAの

    spriteBatch.Draw

    を使用して、例えばMISA();でPIC1.pngを表示させてボタン判定でMIKA();に飛ばしてそこでPIC2;を表示させたいのです。

    その方法が分からずずっと悪戦苦闘しております。

    初歩的なことですがご回答お願いします。

    2012年5月28日 16:31
  • インスタンスを作って変数に代入していますか?
    2012年5月28日 16:40
  • 一応C言語はやってたのですがC#は全然違うものとなっていまして混乱しています。

    spriteBatch がどのようになっているか確認したんですか?
    そいつが null ならば、C 言語で言う NULL が入ったポインタ変数に対して操作を試みているわけですが、何をしないといけないか想像できませんか?(C 言語でもポインタに対して操作するシチュエーションがあるので、今起きている問題は同じことですよ)

    spriteBatch は名前から察するにフィールド変数か、ローカル変数ですよね?
    そこに何か代入する処理をあなた自身が書かないと、null(NULL) に対する操作になるので、例外が発生するのは C 言語から変わらないことです。
    必要なのであれば、spriteBatch が使える場所から渡すか、新たに生成するかが必要なのでしょう。

    私自身、XNA は明るくないのですが、そもそも、「spriteBatch を自作クラスに取り回す」というシナリオは妥当なのでしょうか?
    もし、妥当だとしても、長期間持っていてよいのでしょうか?今使おうとしているタイミングで使ってよいのでしょうか?
    XNA を使ったゲーム or アプリケーションとしてあるべき姿を調べてみてください。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。

    2012年5月28日 16:46
    モデレータ
  • なるほど。

    私がやってみたいのはXNAにて軽いノベルゲーを作ろうとしているのですが流れ的にはprotected override void Draw(GameTime gameTime)で画像表示させてUpdataでボタン判定後の処理を書く。

    例えばDrawでPIC1を表示後Updataでキーが入力されたので次はDrawでPIC2を表示させる。

    こういう流れで良いのでしょうか?

    C言語のときはDXライブラリでノベルゲーを作っていました。

    例えばprotected override void Draw(GameTime gameTime)でtexture変数に格納された画像(PIC1)をはじめに表示させるとしてUpdataに戻ってキー押されたら次はPIC2を表示させたい場合はtextureに新たにPIC2を入れてやら無いとだめなのでしょうか?

    文章が分かりにくくすいませんがよろしくお願いします。

    2012年5月28日 17:03
  • こんにちは、masakazu360 さん。
     
    MSDN フォーラムのご利用ありがとうございます。オペレーターの山本です。
    XNA についてのご質問ということであれば、XNA で開発されている方が多く利用されている専用のコミュニティ フォーラムがあります。
    ご利用をご検討くださいね。
    http://forums.create.msdn.com/forums/
    http://forums.create.msdn.com/forums/default.aspx?GroupID=16
    __________________________
    日本マイクロソフト株式会社 フォーラム オペレーター 山本 春海
    • 回答としてマーク 山本春海 2012年6月26日 7:18
    2012年5月29日 8:53
  • ありがとうございます。まさか担当の方から返信くださるとは思いませんでした。リンク先のフォーラムのほうでサイド質問させていただきます。

    この度はありがとうございました。

    2012年5月29日 11:12