トップページ > 記事閲覧
リセット機能について
名前:north 日時: 2014/12/21 18:15

短期間での連投での質問申し訳ございません。 先にデバッグ用にリセット機能を実装しようとしたのですが、 バグが発生して何が原因なのかわからず詰まっております。 具体的には ・キャラクターの表示向きが最初と異なっている。 ・敵が表示されない ・3回目以降は何も表示されなくなる です。 原因を探してみたのですがデバッグの仕方が悪いのかわからず困っております。 どうかヒントでもいい尚でご教授いただけたらと思います。 下記に問題のプログラムをアップいたしました。 ttp://xfs.jp/UtpaXP お忙しい中申し訳ありませんがご教授願えたらと思います。
メンテ

Page: 1 |

Re: リセット機能について ( No.1 )
名前:管理人 日時:2014/12/22 01:44

ではヒントだけ enemy->LoadEnemy や enemy->LoadEnemyOrder や model->LoadFile や model->LoadWepon などで 読み込んだデータがリセット処理内の memset で0初期化されてしまっています それがプレイヤーや敵が表示されなくなる原因です もし memset で何が行われているのかわからないと言うことでしたら、一度 memset を使用しないで 変数一つ一つを初期化するプログラムを組んでみてください、理解が深まると思います
メンテ
Re: リセット機能について ( No.2 )
名前:north 日時:2014/12/23 02:27

ありがとうございます。 表示されない原因はmemsetで各モデルのハンドルまで0を入れているため表示されないとわかりました。 モーションが再生されないのもこれが原因だと思われます。 もう一つ質問なのですが、こうなってきますとリセット機能を作成する場合はやはり構造体の変数一つ一つを必要な変数だけ初期化するしかないのでしょうか? 構造体の変数の量が結構あるため一つ一つ初期化となると手間がかかると思われるのですが、この場合これしか方法はないでしょうか? 重ね重ね申し訳ありませんがもし他によい方法がありましたら教えていただけると幸いです。
メンテ
Re: リセット機能について ( No.3 )
名前:softya(ソフト屋) 日時:2014/12/23 10:45

C++においてmemsetはコンストラクタ/デストラクタを無視するのでリスキーです。 C++をちゃんと使うには1つ1つ代入すべきだと思いますよ。 もしint/floatだけで構成されている構造体ならmemsetを使っても害はないかもしれませんがC++の規格上は保証されない行為です。 「[迷信] とりあえず memset で初期化 | 株式会社きじねこ」 http://www.kijineko.co.jp/tech/superstitions/initialization-by-memset.html
メンテ
Re: リセット機能について ( No.4 )
名前:管理人 日時:2014/12/23 13:54

> もう一つ質問なのですが、こうなってきますとリセット機能を作成する場合はやはり構造体の変数一つ一つを必要な変数だけ初期化するしかないのでしょうか? memset を使用しない場合はそういうことになります > 構造体の変数の量が結構あるため一つ一つ初期化となると手間がかかると思われるのですが、この場合これしか方法はないでしょうか? はい
メンテ
Re: リセット機能について ( No.5 )
名前:north 日時:2014/12/24 01:22

>softya様 アドバイスありがとうございます。 以前勤めていた会社の先輩から構造体はmemset関数を使うと一気に初期化できると教わったのでこの方法でやっていましたが、 まさかリスクのある方法だとは思いませんでした。 今のところint、floatで構成されている構造体のみですのでmemsetのままで行こうと思いますが、 今後はこのことを念頭に面倒くさがらずに一つ一つ 代入する方向で行きたいと思います。 参考サイトの掲載もありがとうございました。 >管理人様 ご回答ありがとうございます。 リセットに必要な変数だけリセット用の関数を作成し、そこで初期化する方法をとりました。 無事にリセット機能を実装することができました。 また何かありましたらご迷惑をおかけいたしますがよろしくお願い致します。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存