トップ回答者
インスタンスについて

質問
-
こんにちは。
私は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#初心者でもあり困っています。
よろしくお願いいたします。
回答
-
こんにちは、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
すべての返信
-
一応C言語はやってたのですがC#は全然違うものとなっていまして混乱しています。
spriteBatch がどのようになっているか確認したんですか?
そいつが null ならば、C 言語で言う NULL が入ったポインタ変数に対して操作を試みているわけですが、何をしないといけないか想像できませんか?(C 言語でもポインタに対して操作するシチュエーションがあるので、今起きている問題は同じことですよ)spriteBatch は名前から察するにフィールド変数か、ローカル変数ですよね?
そこに何か代入する処理をあなた自身が書かないと、null(NULL) に対する操作になるので、例外が発生するのは C 言語から変わらないことです。
必要なのであれば、spriteBatch が使える場所から渡すか、新たに生成するかが必要なのでしょう。私自身、XNA は明るくないのですが、そもそも、「spriteBatch を自作クラスに取り回す」というシナリオは妥当なのでしょうか?
もし、妥当だとしても、長期間持っていてよいのでしょうか?今使おうとしているタイミングで使ってよいのでしょうか?
XNA を使ったゲーム or アプリケーションとしてあるべき姿を調べてみてください。
質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
- 編集済み AzuleanMVP, Moderator 2012年5月28日 16:49
-
なるほど。
私がやってみたいのは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を入れてやら無いとだめなのでしょうか?
文章が分かりにくくすいませんがよろしくお願いします。
-
こんにちは、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