質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

200閲覧

Unity 5つのスイッチが有ってその中の特定の2つだけが選択された瞬間に正解判定を出したい

Tora_ou

総合スコア7

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2025/06/04 15:01

編集2025/06/04 15:03

実現したいこと

全部で5つのスイッチが有って、その中の特定の2つだけが選択された瞬間に正解判定を出す(※正解の2つを含んでいても3つ目が選ばれている場合はダメ)
みたいなクイズが作りたくて、オン、オフの判定だからと安易な考えてとりあえずトグルで作ってみたのですが、
実際に作ってみてからふと「もしかしたらトグルではない方法のほうが判定しやすいのでは?」
と思いました。理由はトグルの本来の用途ではない感じがしたからです。
どうやらトグルは1つをONにすると他の全てがOFFになる、といった感じの使い方をする為の物っぽいです?
あとは単純に「このトグルがオフの時」という判定の取り方がわからないです。

普通にトグルではない何かを5つ並べてそれぞれに 0 か 1 の判定作ったほうが良いのでしょうか?
それとも「全部で5つのスイッチが有って、その中の特定の2つだけが選択された瞬間に正解判定を出す」
これをやるなら他にもっと適した方法が存在しますか?

発生している問題・分からないこと

「全部で5つのスイッチが有って、その中の特定の2つだけが選択された瞬間に正解判定を出す」
これをやる為にもっと適した方法(使用するUI)は何か?を知りたい

ソースコードですが
5つスイッチがあってその中の1番と3番だけの2つだけが選択された時に正解判定を出す、というプログラム↓
「Toggle01.isOn」というトグルがオンなのか?という判定は出来ていますがトグルがオフなのか?という判定の取り方(書き方)がわかりません。
「isOn」の逆なのだから「Toggle02.isOff」なのかな?と書いてみたけどそんな書き方は無かったです。

該当のソースコード

using UnityEngine; using UnityEngine.UI; public class QuizHantei : MonoBehaviour { public Toggle Toggle01; public Toggle Toggle02; public Toggle Toggle03; public Toggle Toggle04; public Toggle Toggle05; void Start() { } // Update is called once per frame void Update() { if (Toggle01.isOn && Toggle02.isOff && Toggle03.isOn && Toggle04.isOff && Toggle05.isOff) //isOn という書き方は有るけど、isOff なんて書き方は存在しない {   //正解判定が出た処理 } } }

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

トグルスイッチ自体の詳しい解説は検索したら出てきましたので
スイッチをオンにする方法、オフにする方法、等はわかりました。
「そのスイッチがオンならば」という判定の取り方もわかりました。
しかし「そのスイッチがオフならば」という判定の取り方を解説してくれているサイトは見つけられなかったです。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tora_ou

2025/06/04 17:20

トグルの「OnValueChanged」を使ってその都度、そのトグル専用に用意した変数を1にする、0にするを交互に行い 5つそれぞれのトグルのオン、オフを判定することにしました。 他にもっともっと良い方法が絶対に有るんだろうなぁ、と自分でも思いながらも作りたかった通りに一応は動くので別にこれでも良いか、と・・・ Unity触って1か月半の超ド素人なので何が良くて何が悪いのかすらわかっておらず試行錯誤しか無いです。 しかしこの方法は正解とは違うんだろうなと思いながらも、スマートなコードが書けずに読みにくくてごちゃごちゃしてても動いてくれるのが楽しい。 もっと良い方法があればぜひ教えて下さい。
YAmaGNZ

2025/06/04 22:12

トグルの値としてONとOFFしかないのであればOFFは「ONではない」と判断できるのではないですか? 「C#で否定条件」とでも検索してみてはどうでしょうか
YAmaGNZ

2025/06/05 04:14 編集

>どうやらトグルは1つをONにすると他の全てがOFFになる、といった感じの使い方 それはToggle Groupではないですか? Toggle単体は単なるON/OFFを表すものだと思います。 ちょっと誤解される表現かと思ったので追記です。 Toggle Groupとして扱わずにToggle単体として複数配置すればそれぞれのON/OFFは独立して操作できるかと思います。
Tora_ou

2025/06/05 05:16

いただいたコメントがヒントになってトグルがオフの時、という書き方がわかりました。 ありがとうございました。 このままだと条件を満たしている間、ずっと処理を実行し続けてしまうので 最初の一度だけしか処理されないようここから改善していきたいと思います。 if (Toggle01.isOn && !Toggle02.isOn && Toggle03.isOn && !Toggle04.isOn && !Toggle05.isOn) //Toggle01.isOnだとオンの時   //!Toggle02.isOn ←のように先頭に!を付けるとオフの時、という式になる { Debug.Log("正解判定"); return; }
Tora_ou

2025/06/05 05:19

コメントはベストアンサーには選べないみたいですね? ベストアンサーにするには改めて「回答」としてもう一度書き込みしていただく必要が有るなんて 変わった仕様ですね。。。
YAmaGNZ

2025/06/05 05:24

こちらのコメントはあくまで質問に対する質問等を行う場所なので回答とは違うということでしょう。 上記コメントのようにこうしたというのを自己回答して自己解決としてください。
guest

回答1

0

自己解決

YAmaGNZ様のコメントがヒントになりコードの書き方がわかりましたので解決とします

if (Toggle01.isOn && !Toggle02.isOn && Toggle03.isOn && !Toggle04.isOn && !Toggle05.isOn)
//Toggle01.isOnだとオンの時  
//!Toggle02.isOn ←のように先頭に!を付けるとオフの時、という式になる

{
Debug.Log("正解判定");
return;
}

投稿2025/06/05 06:01

Tora_ou

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問