何度も同じ質問をしてしまい申し訳ございません。
以前、こちらのサイトでシーンごとのソース管理について
質問させて頂いた者です。
http://www.play21.jp/board/formz.cgi?ac ... &rln=45138
もしgame_scene.cppなどのシーンからSceneChange関数を
呼ぶ場合はどうすればよいのでしょうか?
error C3861: 'SceneChange': 識別子が見つかりませんでした
と出てしまいます。
これはSceneChange()を別のページで書いているからでしょうか?
シーンごとのソース管理
Re:シーンごとのソース管理
>もしgame_scene.cppなどのシーンからSceneChange関数を
>呼ぶ場合はどうすればよいのでしょうか
SceneChange関数のプロトタイプ宣言を適当なヘッダに書いて、それを game_scene.cppなどのソース上で
インクルードして下さい。
>呼ぶ場合はどうすればよいのでしょうか
SceneChange関数のプロトタイプ宣言を適当なヘッダに書いて、それを game_scene.cppなどのソース上で
インクルードして下さい。
Re:シーンごとのソース管理
ご回答ありがとう御座います。
すみません。質問の日本語がおかしかったです。
SceneChangeという関数を作って
シーンを変えられるようにしたいです。
現在は GetSceneFunc(int id) の戻り値をシーンで読み込んでる感じです。
キーワード:dx
http://www1.axfc.net/uploader/Ne/so/73699
すみません。質問の日本語がおかしかったです。
SceneChangeという関数を作って
シーンを変えられるようにしたいです。
現在は GetSceneFunc(int id) の戻り値をシーンで読み込んでる感じです。
キーワード:dx
http://www1.axfc.net/uploader/Ne/so/73699
Re:シーンごとのソース管理
そもそも関数SceneChangeの実体がありませんね。
実体を書かなければ動かす事ができませんよね。
ほかにも数個関数の実体がない関数があります。
実体を書かなければ動かす事ができませんよね。
ほかにも数個関数の実体がない関数があります。

Re:シーンごとのソース管理
ご回答ありがとう御座います。
すみません。ここにあげるためにいくつか関数を省きました。
>>そもそも関数SceneChange関数の実体がありませんね。
これを作りたいのですがどこにどう書けばよいのかが
検討つきません・・・。
今まではmain.cppにてsceneFunc = GetSceneFunc(SENE_GAME);
みたいに書いておりました。
これをmain.cpp以外でやるためにSceneChange関数を作りたいです。
すみません。ここにあげるためにいくつか関数を省きました。
>>そもそも関数SceneChange関数の実体がありませんね。
これを作りたいのですがどこにどう書けばよいのかが
検討つきません・・・。
今まではmain.cppにてsceneFunc = GetSceneFunc(SENE_GAME);
みたいに書いておりました。
これをmain.cpp以外でやるためにSceneChange関数を作りたいです。
Re:シーンごとのソース管理
>これを作りたいのですがどこにどう書けばよいのかが
SceneChange関数は System.SceneNumの値を変更するだけでいいんじゃないでしょうか?
その場合 GetSceneFunc内での System.SceneNumに対する書き込みは不要になります。
どこに書くかは System.SceneNumにアクセスできるところならどこでもお好みで。
本来 GetSceneFunc関数らを含めて独立したソースにあるのが望ましいですが、現状 main.cppにあるのなら
そこでも構わないでしょう。
あとはプロトタイプ宣言を書いたヘッダを用意すればいいかと。
SceneChange関数は System.SceneNumの値を変更するだけでいいんじゃないでしょうか?
その場合 GetSceneFunc内での System.SceneNumに対する書き込みは不要になります。
どこに書くかは System.SceneNumにアクセスできるところならどこでもお好みで。
本来 GetSceneFunc関数らを含めて独立したソースにあるのが望ましいですが、現状 main.cppにあるのなら
そこでも構わないでしょう。
あとはプロトタイプ宣言を書いたヘッダを用意すればいいかと。
Re:シーンごとのソース管理
なんどもすみません・・・。
回答ありがとう御座います。
また、なかった関数を付け足しました最新版です。
http://211.18.152.192:81/uploader/He/up ... ?377473378
pass:dx
現在main.cppからならSystem.SceneNumを弄りシーンチェンジが出来るのですが
~_sceneといった所ですと呼び出すことができません・・・。
※F2でシーンチェンジするようにしてあります。
+1をしているだけなのでシーンがない場所にも読みに行っております。(危ないのはわかっております)
調べてみるとextern?というのを変数の先につけるとできると言うことまでわかりました。
しかしつけてみたのですがうまく動きません・・・。
また毎シーンでキー情報の取得などが呼ばれるのでシーンごとに定義しなくても
KEY Keyを呼び出せるようにしたいです・・・。
回答ありがとう御座います。
また、なかった関数を付け足しました最新版です。
http://211.18.152.192:81/uploader/He/up ... ?377473378
pass:dx
現在main.cppからならSystem.SceneNumを弄りシーンチェンジが出来るのですが
~_sceneといった所ですと呼び出すことができません・・・。
※F2でシーンチェンジするようにしてあります。
+1をしているだけなのでシーンがない場所にも読みに行っております。(危ないのはわかっております)
調べてみるとextern?というのを変数の先につけるとできると言うことまでわかりました。
しかしつけてみたのですがうまく動きません・・・。
また毎シーンでキー情報の取得などが呼ばれるのでシーンごとに定義しなくても
KEY Keyを呼び出せるようにしたいです・・・。
Re:シーンごとのソース管理
>現在main.cppからならSystem.SceneNumを弄りシーンチェンジが出来るのですが
>~_sceneといった所ですと呼び出すことができません
?
SceneChange関数を使ってシーンを変えるのではなく、各ソースから直接グローバル変数である
System.SceneNumを変えてシーンを変えたいのですか?
あまりグローバル変数をあちこちで参照するのはお行儀がよくないので、
SceneChange関数を作り、その中で System.SceneNumを変えるようにしましょう。
既に MyLib.hに SceneChange関数のプロトタイプ宣言があるので、あとは関数の実体さえあれば
あとは他のソースで MyLib.hをインクルードすれば、SceneChange関数を呼び出すことが
できるはずです。
ついでに、SceneChange関数内で sceneFuncを書き換えるようにしましょう。
そうすればあらためて GetSceneFuncを呼び出さなくて済みます。
で、先にも書きましたが、GetSceneFuncでの sceneFuncの代入を止めます。
最小限の書き換えをしてものを添付しました。
見比べたり、他のソースから SceneChange関数を呼び出してみるなど試してみて下さい。
>シーンがない場所にも読みに行っております
シーンがなくても問題なく動くようにしましょう。
無効なシーンの場合は sceneFuncに NULLが入るようにして、
if(sceneFunc->init) sceneFunc->init();
ではなく
if(sceneFunc && sceneFunc->init) sceneFunc->init();
とすれば安全になります。
>シーンごとに定義しなくても
>KEY Keyを呼び出せるようにしたいです・・・。
もうできるようになってますよ。
MyLib.hに extern KEYがあるので、MyLib.hさえインクルードされていれば
各ソースで Key変数にアクセスできます。
試してみて下さい。
>~_sceneといった所ですと呼び出すことができません
?
SceneChange関数を使ってシーンを変えるのではなく、各ソースから直接グローバル変数である
System.SceneNumを変えてシーンを変えたいのですか?
あまりグローバル変数をあちこちで参照するのはお行儀がよくないので、
SceneChange関数を作り、その中で System.SceneNumを変えるようにしましょう。
既に MyLib.hに SceneChange関数のプロトタイプ宣言があるので、あとは関数の実体さえあれば
あとは他のソースで MyLib.hをインクルードすれば、SceneChange関数を呼び出すことが
できるはずです。
ついでに、SceneChange関数内で sceneFuncを書き換えるようにしましょう。
そうすればあらためて GetSceneFuncを呼び出さなくて済みます。
で、先にも書きましたが、GetSceneFuncでの sceneFuncの代入を止めます。
最小限の書き換えをしてものを添付しました。
見比べたり、他のソースから SceneChange関数を呼び出してみるなど試してみて下さい。
>シーンがない場所にも読みに行っております
シーンがなくても問題なく動くようにしましょう。
無効なシーンの場合は sceneFuncに NULLが入るようにして、
if(sceneFunc->init) sceneFunc->init();
ではなく
if(sceneFunc && sceneFunc->init) sceneFunc->init();
とすれば安全になります。
>シーンごとに定義しなくても
>KEY Keyを呼び出せるようにしたいです・・・。
もうできるようになってますよ。
MyLib.hに extern KEYがあるので、MyLib.hさえインクルードされていれば
各ソースで Key変数にアクセスできます。
試してみて下さい。
Re:シーンごとのソース管理
>>Justy様
いつも助けていただいてありがとうございます。
できました><
Keyが呼び出せなかった原因としてインクルードしてないモノがありました・・・。
本当にありがとうございました。
いつも助けていただいてありがとうございます。
できました><
Keyが呼び出せなかった原因としてインクルードしてないモノがありました・・・。
本当にありがとうございました。