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

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

新規登録して質問してみよう
ただいま回答率
85.35%
C#

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

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

Unity

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

Q&A

0回答

769閲覧

子オブジェクトに対応したtextを表示したい

5949

総合スコア0

C#

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

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

Unity

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

0グッド

0クリップ

投稿2021/12/22 07:17

編集2021/12/24 03:02

前提・実現したいこと

<前提>
Unityで生成したオブジェクトの名前に応じてtextを切り替える機構を作っている。

訂正前のコードでname1,2,3...10に対応した文字が出力されていたが、一度出力された文字が二度は出力されないという不具合の修正方法を探していたところGameObject.Findが原因であることがわかり、同じオブジェクトを参照するためにはGameObject.FindGameObjectsWithTagを使うとよいとさていたため訂正後に書き換えた。
しかし、訂正後のコードで構文エラーを起こした。

<質問>

・正しい訂正方法はどのようにすればよいのか。

発生している問題・エラーメッセージ

訂正前:一度出力された文字が二度は出力されない 訂正後:以下のエラーメッセージが出て、進行不可になっている エラー CS0029 型 'UnityEngine.GameObject' を 'UnityEngine.GameObject[]' に暗黙的に変換できません

該当のソースコード

//訂正前-------------------------------------------------------------------------------------------- public class gamecontroller : MonoBehaviour { public Text handpoint; public GameObject[] cardPrefab; private int number; public Transform playerHand; bool isCalledOncedrow = false; string name1; string name2; string name3; string name4; string name5; string name6; string name7; string name8; string name9; string name10; void Start() { number = Random.Range(0, cardPrefab.Length); Instantiate(cardPrefab[number], playerHand); }     void Update() { int handCount = playerHand.transform.childCount; handpoint.text = $"{name1}{name2}{name3}{name4}{name5}{name6}{name7}{name8}{name9}{name10}"; if (handCount < 10) { if (!isCalledOncedrow) { if (Input.GetKeyDown(KeyCode.C)) { drowing(); } } } if (handCount >= 1) { GameObject child1 = playerHand.transform.GetChild(0).gameObject; if (child1 == GameObject.Find("card (+)(Clone)")) { name1 = "+"; } if (child1 == GameObject.Find("card (-) (Clone)")) { name1 = "-"; } if (child1 == GameObject.Find("card (×)(Clone)")) { name1 = "×"; } if (child1 == GameObject.Find("card (÷)(Clone)")) { name1 = "÷"; } if (child1 == GameObject.Find("card (1)(Clone)")) { name1 = "1"; } if (child1 == GameObject.Find("card (2)(Clone)")) { name1 = "2"; } if (child1 == GameObject.Find("card (3)(Clone)")) { name1 = "3"; } if (child1 == GameObject.Find("card (4)(Clone)")) { name1 = "4"; } if (child1 == GameObject.Find("card (5)(Clone)")) { name1 = "5"; } if (child1 == GameObject.Find("card (6)(Clone)")) { name1 = "6"; } if (child1 == GameObject.Find("card (7)(Clone)")) { name1 = "7"; } if (child1 == GameObject.Find("card (8)(Clone)")) { name1 = "8"; } if (child1 == GameObject.Find("card (9)(Clone)")) { name1 = "9"; } if (child1 == GameObject.Find("card (0)(Clone)")) { name1 = "0"; } } //child2~child10は文字数オーバーのため割愛 } void drowing() { isCalledOncedrow = true; number = Random.Range(0, cardPrefab.Length); Instantiate(cardPrefab[number], playerHand); } //訂正後-------------------------------------------------------------------------------------------- public class gamecontroller : MonoBehaviour { public Text handpoint; public GameObject[] cardPrefab; private int number; public Transform playerHand; bool isCalledOncedrow = false; string name1; string name2; string name3; string name4; string name5; string name6; string name7; string name8; string name9; string name10; GameObject[] child1; GameObject[] child2; GameObject[] child3; GameObject[] child4; GameObject[] child5; GameObject[] child6; GameObject[] child7; GameObject[] child8; GameObject[] child9; GameObject[] child10; private string answerTag1 = "card.1"; private string answerTag2 = "card.2"; private string answerTag3 = "card.3"; private string answerTag4 = "card.4"; private string answerTag5 = "card.5"; private string answerTag6 = "card.6"; private string answerTag7 = "card.7"; private string answerTag8 = "card.8"; private string answerTag9 = "card.9"; private string answerTag10 = "card.10"; private string answerTagplus = "card.plus"; private string answerTagminus = "card.minus"; private string answerTagcloss = "card.closs"; private string answerTagslash = "card.slash"; void Start() { number = Random.Range(0, cardPrefab.Length); Instantiate(cardPrefab[number], playerHand); } void Update() { int handCount = playerHand.transform.childCount; handpoint.text = $"{name1}{name2}{name3}{name4}{name5}{name6}{name7}{name8}{name9}{name10}"; if (handCount < 10) { if (!isCalledOncedrow) { if (Input.GetKeyDown(KeyCode.C)) { drowing(); } } } if (handCount >= 1) { child1 = playerHand.transform.GetChild(0).gameObject; if (child1 == GameObject.FindGameObjectsWithTag("card.plus")) { name1 = "+"; } if (child1 == GameObject.FindGameObjectsWithTag("card.minus")) { name1 = "-"; } if (child1 == GameObject.FindGameObjectsWithTag("card.closs")) { name1 = "×"; } if (child1 == GameObject.FindGameObjectsWithTag("card.slash")) { name1 = "÷"; } if (child1 == GameObject.FindGameObjectsWithTag("card.1")) { name1 = "1"; } if (child1 == GameObject.FindGameObjectsWithTag("card.2")) { name1 = "2"; } if (child1 == GameObject.FindGameObjectsWithTag("card.3")) { name1 = "3"; } if (child1 == GameObject.FindGameObjectsWithTag("card.4")) { name1 = "4"; } if (child1 == GameObject.FindGameObjectsWithTag("card.5")) { name1 = "5"; } if (child1 == GameObject.FindGameObjectsWithTag("card.6")) { name1 = "6"; } if (child1 == GameObject.FindGameObjectsWithTag("card.7")) { name1 = "7"; } if (child1 == GameObject.FindGameObjectsWithTag("card.8")) { name1 = "8"; } if (child1 == GameObject.FindGameObjectsWithTag("card.9")) { name1 = "9"; } if (child1 == GameObject.FindGameObjectsWithTag("card.0")) { name1 = "0"; } } //child2~child10は文字数オーバーのため割愛 } void drowing() { isCalledOncedrow = true; number = Random.Range(0, cardPrefab.Length); Instantiate(cardPrefab[number], playerHand); }

補足情報(FW/ツールのバージョンなど)

Unity 2018.3.7f1

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問