gamemaker始めて半年です。 5日ぐらい奮闘していますが、調べても解決策が出てこないので、初の掲示板使わせていただきます…。
選択肢を実装したいのですが、上手くいきません…。
選択肢を選択した時おかしくなります。
選択肢①・選択肢②があるとして、選択肢②を選び決定ボタンを押すと、なぜか選択肢②とともに選択肢①も起動してしまいます。
一体どうしたら良いのでしょうか?😭
今同じ方法で試してみたら正常に動作しました。 投稿した内容以外に関係してる箇所があって、そこが悪さしてる可能性はないでしょうか? 下記のようにして変数の値をoutputさせて、Outputに出力される値を見て期待通りに動いてるか確認してみてください
if (keyboard_check_pressed(vk_up)) { erabu--; if (erabu < 0) { erabu = sentaku-1; } show_debug_message($"erabu={erabu}, sentaku={sentaku}"); } if (keyboard_check_pressed(vk_down)) { erabu++; if (erabu >= sentaku) { erabu = 0; } show_debug_message($"erabu={erabu}, sentaku={sentaku}"); } if (keyboard_check_pressed(vk_space)) { switch (erabu) { case 0: show_debug_message($"selected 0"); instance_create_layer(100, 300, layer, obj_sakuya_hutuu); break; case 1: show_debug_message($"selected 1"); instance_create_layer(300, 300, layer, obj_sakuya_naku); break; } }
コメントありがとうございます。 出力の所を見てみると、
選択肢①を決定した時 "selected 0" 選択肢②を選んだ時 "erabu=1,sentaku=2" 選択肢②を決定した時 "selected 0""selected 1"
とやはり…同時に表示されてます。
ここで試しに選択肢③を作ったところ、
選択肢③を選んだ時
"erabu=2,sentaku=3" "erabu=1,sentaku=3"
と表示され、
選択肢③を決定した時
"selected 2""selected 1""selected 0"
と、やはり他の選択肢も同時に表示されてしまいます…😭
それは不思議ですね 一度ここにコードを貼ってもらえますか?(CreateイベントとStepイベント) コードの投稿の仕方はここを御覧ください https://zawazawa.jp/official/topic/53
ありがとうございます。 とりあえず今の選択肢三つあるコードを貼っておきます。
Createイベント↓
op_border = 300; op_space = 65; erabu = 0; option[0] = "FIGHT"; option[1] = "AITEM"; option[2] = "test"; sentaku = array_length(option);
Stepイベント↓
if(keyboard_check_pressed(vk_up)) { erabu--; if(erabu < 0) {erabu = 0} show_debug_message($"erabu={erabu},sentaku={sentaku}"); } //下ボタン if(keyboard_check_pressed(vk_down)) { erabu++; if(erabu >= sentaku) {erabu = 2;} show_debug_message($"erabu={erabu},sentaku={sentaku}"); } //それぞれの選択肢結果 if(keyboard_check_pressed(vk_space)) { switch(erabu){ case 0: show_debug_message($"selected 0"); instance_create_layer(100, 300, layer, obj_sakuya_hutuu); break; case 1: show_debug_message($"selected 1"); instance_create_layer(300, 300, layer, obj_sakuya_naku); break; case 2: show_debug_message($"selected 2"); instance_create_layer(500, 300, layer, obj_sakuya_warau); break; } }
やはりこちらでは正常に動作しました。
Stepイベントのspaceを押した時の処理部分にこれをコピペして試してもらえますか? 0を選択してspaceを押す 1を選択してspaceを押す 2を選択してspaceを押す それぞれOutputに出力された内容を確認してください
//それぞれの選択肢結果 if(keyboard_check_pressed(vk_space)) { show_debug_message($"erabu={erabu} (id={id})"); switch(erabu){ case 0: show_debug_message($"selected 0"); break; case 1: show_debug_message($"selected 1"); break; case 2: show_debug_message($"selected 2"); break; } }
ありがとうございます。
0を選択しspaceを押すと、
erabu=0 (id=ref instance 107860) selected 0 erabu=0 (id=ref instance 107861) selected 0 . . .
1を選択しspaceを押すと、
erabu=1 (id=ref instance 111334) selected 1 erabu=0 (id=ref instance 111335) selected 0 . . .
2を選択しspaceを押すと
erabu=2 (id=ref instance 100261) selected 2 erabu=1 (id=ref instance 100262) selected 1 erabu=0 (id=ref instance 100349) selected 0 . . .
のようになりました🤔
id値はそのコードを実行してるインスタンスを示しますが、 それが全部違っているのはなぜだか分かりますか? (本来1つだけのはずだと思うのです)
他の部分がどうなっているのか分からないので、なぜそうなるのか推測するしかありませんが、 そのオブジェクトが複数存在しているとか動的に作成されているということはありませんか?
なるほど… とすると、他のルームにもそのオブジェクトがあるとダメって感じですか…?
とりあえず他のroomは考えなくていいです このコードが書かれているオブジェクトがroom内に1つだけある形であれば正常に動くはずです
ですがインスタンスidが操作をするたびに変わっています プロジェクトの作りがどうなっているのか不明なので私にはその理由までは分かりません どういう作りになっているか一度見直してみてはどうでしょうか
追記 roomがpersistentになってる場合はそのroomにこのオブジェクトがあると競合すると思います (操作を複数のインスタンスが拾うので)
こんばんは 新しいルームでもう一度動かしたところ正常に動作しました。😅 何が悪かったのか原因を探ってみたところ、別のオブジェクトの
switch(_start){ case BATTLE.BATTLE_MODE_1: instance_create_layer(x,y,layer,obj_battle) case BATTLE.BATTLE_MODE_2:
のinstance_create_layer(x,y,layer,obj_battle)が問題だったようです😅 (今までのコードがobj_battleのコードです)
(確かに、これはやってることおかしいですわ…)
教えてくれたおかげで、なんとか問題に辿り着けたので助かりました! 分からないままだったら、ずっと同じコード直してました😅
全体を見直して、ご自分で原因にたどり着いたと。最高ですね!
私がよくやることですが、
今回は新しいroomで動かしたのが原因究明につながったようですね 原因がわかってよかったです!
不適切なコンテンツとして通報するには以下の「送信」ボタンを押して下さい。 管理チームへ匿名通報が送信されます。あなたが誰であるかを管理チームに特定されることはありません。
どのように不適切か説明したい場合、メッセージをご記入下さい。空白のままでも通報は送信されます。
通報履歴 で、あなたの通報と対応時のメッセージを確認できます。
トピックをWIKIWIKIに埋め込む
次のコードをWIKIWIKIのページに埋め込むと最新のコメントがその場に表示されます。
// generating...
プレビュー
マニュアル(ver2~2.2.x) マニュアル(ver2.3~) YoYoGames YoYoGames 公式コミュニティ GM関連のYoutubeチャンネル集 解説・資料サイト集(日本語) 解説・資料サイト集(英語)
ここまでがあなたのコンテンツ
ここからもあなたのコンテンツ
今同じ方法で試してみたら正常に動作しました。
投稿した内容以外に関係してる箇所があって、そこが悪さしてる可能性はないでしょうか?
下記のようにして変数の値をoutputさせて、Outputに出力される値を見て期待通りに動いてるか確認してみてください
コメントありがとうございます。
出力の所を見てみると、
選択肢①を決定した時 "selected 0"
選択肢②を選んだ時 "erabu=1,sentaku=2"
選択肢②を決定した時 "selected 0""selected 1"
とやはり…同時に表示されてます。
ここで試しに選択肢③を作ったところ、
選択肢③を選んだ時
"erabu=2,sentaku=3"
"erabu=1,sentaku=3"
と表示され、
選択肢③を決定した時
"selected 2""selected 1""selected 0"
と、やはり他の選択肢も同時に表示されてしまいます…😭
それは不思議ですね
一度ここにコードを貼ってもらえますか?(CreateイベントとStepイベント)
コードの投稿の仕方はここを御覧ください
https://zawazawa.jp/official/topic/53
ありがとうございます。
とりあえず今の選択肢三つあるコードを貼っておきます。
Createイベント↓
Stepイベント↓
やはりこちらでは正常に動作しました。
Stepイベントのspaceを押した時の処理部分にこれをコピペして試してもらえますか?
0を選択してspaceを押す
1を選択してspaceを押す
2を選択してspaceを押す
それぞれOutputに出力された内容を確認してください
ありがとうございます。
0を選択しspaceを押すと、
erabu=0 (id=ref instance 107860)
selected 0
erabu=0 (id=ref instance 107861)
selected 0
.
.
.
1を選択しspaceを押すと、
erabu=1 (id=ref instance 111334)
selected 1
erabu=0 (id=ref instance 111335)
selected 0
.
.
.
2を選択しspaceを押すと
erabu=2 (id=ref instance 100261)
selected 2
erabu=1 (id=ref instance 100262)
selected 1
erabu=0 (id=ref instance 100349)
selected 0
.
.
.
のようになりました🤔
id値はそのコードを実行してるインスタンスを示しますが、
それが全部違っているのはなぜだか分かりますか?
(本来1つだけのはずだと思うのです)
他の部分がどうなっているのか分からないので、なぜそうなるのか推測するしかありませんが、
そのオブジェクトが複数存在しているとか動的に作成されているということはありませんか?
なるほど…
とすると、他のルームにもそのオブジェクトがあるとダメって感じですか…?
とりあえず他のroomは考えなくていいです
このコードが書かれているオブジェクトがroom内に1つだけある形であれば正常に動くはずです
ですがインスタンスidが操作をするたびに変わっています
プロジェクトの作りがどうなっているのか不明なので私にはその理由までは分かりません
どういう作りになっているか一度見直してみてはどうでしょうか
追記
roomがpersistentになってる場合はそのroomにこのオブジェクトがあると競合すると思います
(操作を複数のインスタンスが拾うので)
こんばんは
新しいルームでもう一度動かしたところ正常に動作しました。😅
何が悪かったのか原因を探ってみたところ、別のオブジェクトの
のinstance_create_layer(x,y,layer,obj_battle)が問題だったようです😅
(今までのコードがobj_battleのコードです)
(確かに、これはやってることおかしいですわ…)
教えてくれたおかげで、なんとか問題に辿り着けたので助かりました!
分からないままだったら、ずっと同じコード直してました😅
全体を見直して、ご自分で原因にたどり着いたと。最高ですね!
私がよくやることですが、
今回は新しいroomで動かしたのが原因究明につながったようですね
原因がわかってよかったです!