質問するログイン新規登録
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

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

Q&A

解決済

1回答

1599閲覧

Unity  オブジェクト(アイテム)を指定した順番に取得できているか確認したい。

kai1987

総合スコア2

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

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

0グッド

0クリップ

投稿2020/11/10 17:29

0

0

前提・実現したいこと

初めまして、Unityを勉強しているものです。

今私が困っているのは...

アイテムを指定した順番に取得して、全て取得した段階で順番どおりに取得できたか正解か不正解が判定できるように
なりたいです。

よくある実装だとは思いますので、いろいろ調べては見たのですが、検索の仕方が悪いせいか分かりませんでした。。

・今は以下のようにTagで分けて取得できるようにしています。

private void OnTriggerEnter2D(Collider2D other) { if(other.gameObject.tag == "Item01") { Debug.Log("tag=Item01"); } if (other.gameObject.tag == "Item02") { Debug.Log("tag=Item02"); } }

大変恐縮ですが、どなたかご教授頂けると幸いです。
どうぞ宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

C#

1using UnityEngine; 2 3public class CheckList : MonoBehaviour 4{ 5 [SerializeField] private string[] correct; 6 [SerializeField] private string[] target; 7 8 // ほかのクラスから見たいときはpublicに 9 // メソッドの引数(調べたい配列, 正答) 10 private bool InOrder(string[] target, string[] correct) 11 { 12 if (target.Length != correct.Length) 13 { 14 // 正解の数と合わなかったら終了 15 return false; 16 } 17 18 int pass = 0; 19 20 for (int i = 0; i < target.Length; i++) 21 { 22 // 正解数を記録 23 if (target[i].Equals(correct[i])) 24 { 25 pass++; 26 } 27 } 28 29 // 正解数が正答の配列とあっているかを返す 30 return pass == correct.Length; 31 } 32}

投稿2020/11/10 18:57

SummitRidge

総合スコア7

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

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

kai1987

2020/11/11 16:16

SummitRidge様、回答ありがとうございます。 申し訳ございません。只今、こちらを参考に試させて頂いていますので、、もうしばらくお待ち頂ければと思います。 宜しくお願い致します。
kai1987

2020/11/11 19:47

申し訳ございません。今回のやりたい事をやろうとしたのですが、上手くできませんでした。。 SummitRidge様が回答して頂いた内容を拝見させて頂きました。 targetで正解を設定して、correctと答え合わせさせると言う流れなのかなと、理解しました。 ただ、そのcorrectの配列を代入したいのですが、上手く行けません。。 本来、ここは今回の質問以前の問題なのかもしれませんが、教えて頂けると幸いです。。。 大変お手数をお掛けいたいますが、宜しくお願い致します。
YAmaGNZ

2020/11/11 22:25

横からですが、string[]と配列で宣言するよりList<string>とListで宣言したほうが扱いやすい気がします。 そうすれば private void OnTriggerEnter2D(Collider2D other) { target.Add(other.gameObject.tag); } といった感じで取得したアイテムを追加していけます。 正解のほうはインスペクタ上から設定すればいいのではないかと思います。
SummitRidge

2020/11/11 22:35

すいません書いた本人です。 要素数の比較ができないかと勘違いしていたのでlistでも行けますねこれ。 listの場合はlist.Countに読み替えてください。 listにしたい場合は
kai1987

2020/11/12 11:18

YAmaGNZ様、SummitRidge様 いろいろお手数をお掛け致します。。 また、アドバスありがとうございます。 まだ、解決は出来ていませんが、、これからコメントを拝見させて頂きながら対応してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問