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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

C#

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

Q&A

解決済

1回答

1665閲覧

unityのテキスト表示ができません

ryou1252

総合スコア1

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

C#

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

0グッド

0クリップ

投稿2022/06/06 04:20

編集2022/06/08 08:38

サイトはhttps://engineer.blog.lancers.jp/ios/ugui_quiz_unity/を参考にしました
全くの初心者なので分からないことばかりですがよろしくお願いします

エラー内容

以前書いたNull~のエラーは消えましたが別のエラーが出て困っています
(コード内のText qlabelのところです)

Assets\QuizMgr.cs(20,10): error CS1061: 'Text' does not contain a definition for 'Text' and no accessible extension method 'Text' accepting a first argument of type 'Text' could be found (are you missing a using directive or an assembly reference?)

やったこと

類似のサイトで正誤判定について調べました
エラーについて調べました

コード

using UnityEngine;
using System.Collections;
using UnityEngine.UI;//UI オブジェクトを扱う時は必須

public class QuizMgr : MonoBehaviour {

public GameObject QLabel; public string Text; //アタッチしたオブジェクトが呼ばれた時に実行される。 void Start () { QLabelSet (); AnswerLabelSet (); } private void QLabelSet(){ //特定の名前のオブジェクトを検索してアクセス Text qLabel = GameObject.Find("qLabel").GetComponentInChildren<Text> (); //データをセットすることで、既存情報を上書きできる qLabel.Text = "what is this pokemon?"; } private void AnswerLabelSet(){ //回答文面の作成 string[] array = new string[]{"pikachu","pika","pipi","pippi"}; //ボタンが4つあるのでそれぞれ代入 for (int i=1; i<=4 ; i++){ Text ansLabel = GameObject.Find("AnsButton" + i).GetComponentInChildren<Text> (); ansLabel.text = array[i-1]; } }

}

画像

イメージ説明

↑画像で示すとこちらです
ページの遷移をしてもテキストがのりません。。。

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

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

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

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

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

ryou1252

2022/06/06 09:22

エラーの情報を追加します↓ NullReferenceException: Object reference not set to an instance of an object QuizMgr.QuestionLabelSet () (at Assets/QuizMgr.cs:17) QuizMgr.Start () (at Assets/QuizMgr.cs:9)
bboydaisuke

2022/06/06 10:31

見直してコードの部分は変だと思いませんか?直しませんか? エラー情報は質問に含めないとそんなに見られませんよ。 QuizMgr.cs:17 で「17行目」でエラーが出ているそうですが、どこが17行目なのかわかりやすく示すと読まれると思いますよ。
ryou1252

2022/06/06 21:08

アドバイスありがとうございます そう言われても分からなくて質問しているので困ります・・・ 勉強不足ですみません エラー情報は次から質問に入れるようにします
bboydaisuke

2022/06/07 01:18 編集

> そう言われても分からなくて質問している 私は問題そのものについては述べていません。問題の説明がわからない、と言っています。回答を寄せている人もそうですよね。 問題は後から編集できます。問題を解決する意思があるなら問題を他の人もわかるように書きましょう。問題を投稿した後でも読み直して書式がおかしかったり説明が適切でないところは直しましょう。 https://teratail.com/help/question-tips
ryou1252

2022/06/07 08:24

問題の説明不足でしたか 後から編集できるのが知らなかったので編集しておきます ご丁寧にありがとうございます。
guest

回答1

0

ベストアンサー

エラーログがないとわからないので
画面下部の「NullReferenceException~~~」って赤字で出ているところをクリックとかしてもらうとコンソール(ログ画面)が出ると思います。
そこの内容を書いてもらうと良いと思います。

「NullReferenceException」っていうのは、参照先がNull = 見つからんぜっていう話です。
上記を踏まえた上で、わかるところから攻めていくとFindがうまくいってないのでしょう。
なので修正すべきは、ただしいオブジェクトが参照できるよう名前を変える or 検索する名前を変更することです。

ラベル

GameObject.Find("Quiz/QLabel").GetComponentInChildren<Text> ();で探しているのはQuiz/QLabelですが別にパスで指定する必要はなかったはずなので、探すべきなのはQLabelかと思います。

ボタン

GameObject.Find("Quiz/AnsButton" + i).GetComponentInChildren<Text> ();で探してますが
画面の表示を見る限りAnsButton(1)とかですよね。なので見つかりません。

答え合わせ用

本当に見つかってないのか答え合わせするのが一番はやいでしょう

private void QuestionLabelSet(){ //特定の名前のオブジェクトを検索してアクセス Text qLabel = GameObject.Find("Quiz/QLabel").GetComponentInChildren<Text> (); //参照とれてる? Debug.Log(qLabel); //データをセットすることで、既存情報を上書きできる qLabel.text = "what is this pokemon?"; } private void AnswerLabelSet(){ //回答文面の作成 string[] array = new string[]{"pikachu","pika","pipi","pippi"}; //ボタンが4つあるのでそれぞれ代入 for (int i=1; i<=4 ; i++){ Text ansLabel = GameObject.Find("Quiz/AnsButton" + i).GetComponentInChildren<Text> (); //参照とれてる? Debug.Log(ansLabel); ansLabel.text = array[i-1]; } }

投稿2022/06/06 08:01

編集2022/06/06 08:01
hogefugapiyo

総合スコア3302

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

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

ryou1252

2022/06/06 21:57 編集

回答ありがとうございます。 本当に助かります! コード見直してみます また質問ですが答え合わせの仕方について教えてください
hogefugapiyo

2022/06/07 03:17

たぶん現状だとコンソールを表示できていないと思うので、下記などを参考にコンソールウィンドウを表示してみてください。コンソールというのはUnityからのエラーログとかが表示されたりする場所で、非常に重要な部分です。 https://tech.pjin.jp/blog/2021/03/01/unity_csharp_debuglog/ その上で答え合わせのスクリプトを実行してもらうとログに吹き出しみたいなアイコンで何行か表示されると思います。 💭 [21:21:11] Null たとえば、こういう感じでNullって表示されたら「参照がとれていない」ということがわかります。 スクリプトからオブジェクトを探す段階で間違っていることがわかりますので、その処理を直すというアタリがつけられます。 一気にやるとわからなくなっちゃうので、まずはコンソールウィンドウを出すところからやってみてください
ryou1252

2022/11/14 13:26

ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問