C++でFCのドラクエっぽいRPGを作るat GAMEDEVC++でFCのドラクエっぽいRPGを作る - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト618:1 08/03/07 02:08:23 rq1yy0In 上のstaticの問題、解決しました。 c++の問題ではなくDxLibの問題でした。 DxLib_Init()を呼び出す前にGetBlendGraph関数を呼び出せないみたいです。 とりあえずエフェクト関連のクラスを初期化する関数を作って、メイン関数でDxLib_Init()後に呼び出す事にします。 現状のバグですが、フィールドで普通のアイテムや呪文が使えません。 ホイミを使ってもルーラを使っても しかし なにもおこらなかった と表示されます。 原因は分かったので直しておきます。 619:名前は開発中のものです。 08/03/07 02:11:20 QhGOdilr その hBlendGraph は main 関数よりも前の段階で初期化が行われるから DX ライブラリの初期化より前に LoadBlendGraph が呼ばれることになる。 しかもどの翻訳単位から初期化されるかは決まってない。 準備が整う前に関数を呼び出したりしたら、上手く動きそうも無い。 基本的に static を多用するのは良くないよ。C++の本読んで勉強しる。。 620:255 08/03/07 07:10:26 jWW/3mmy >>617 そういう場合には、デザインパターンのシングルトンパターンってのが使える。 具体的にいうと、 class VisualEffect{ static int hBlendGraph = NULL; (略) としておいて static int VisualEffects::GetBlendGraph(){ if(hBlendGraph == NULL){ hBlendGraph = LoadBlendGraph("GameData/EffectData/BlendGraph.bmp"); } return hBlendGraph; } とすれば、VisualEffects::GetBlendGraph()を呼び出した時点で 1回だけ初期化が行われる。 でもゲームだと、1回だけとはいえメインループで重い処理 をやっちゃうとアレなので初期化関数でやるのが正解だと思う。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch