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のままで行こうと思いますが、
今後はこのことを念頭に面倒くさがらずに一つ一つ
代入する方向で行きたいと思います。
参考サイトの掲載もありがとうございました。
>管理人様
ご回答ありがとうございます。
リセットに必要な変数だけリセット用の関数を作成し、そこで初期化する方法をとりました。
無事にリセット機能を実装することができました。
また何かありましたらご迷惑をおかけいたしますがよろしくお願い致します。
|