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

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

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

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

UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Q&A

解決済

3回答

1343閲覧

NullReferenceException エラーの解決

takahi_1000

総合スコア8

C#

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

UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

0グッド

0クリップ

投稿2022/03/16 04:27

unity バージョン2021,2,15f1
windows10

unityで車(carオブジェクト)と旗(flagオブジェクト)の距離をui(Distance)でマイフレーム更新して画面に出力するはずですがエラーになってしまいます

エラー内容は以下になります
NullReferenceException: Object reference not set to an instance of an object GameDirector.update()(at Assets/GameDirector.cs:22)

unityのオブジェクトと名前は一致しています

|```c#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class GameDirector : MonoBehaviour
{
GameObject car;
GameObject flag;
GameObject distance;

void Start() { this.car = GameObject.Find("car"); this.flag = GameObject.Find("flag"); this.distance = GameObject.Find("Distance"); } // Update is called once per frame void Update() { float length = this.flag.transform.position.x - this.car.transform.position.x; this.distance.GetComponent<Text>().text = "ゴールまで" + length.ToString("F2") + "m"; }

}

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

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

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

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

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

bboydaisuke

2022/03/16 04:34

コード部分の markdown がおかしいので編集して直してください。質問を見ると非常に変な事になっているのがわかると思います。
guest

回答3

0

Nullはだいたいログを出せば解決するので
参照取った段階で答え合わせするとわかると思います

cs

1void Start() 2{ 3 this.car = GameObject.Find("car"); 4 this.flag = GameObject.Find("flag"); 5 this.distance = GameObject.Find("Distance"); 6 7 Debug.Log("car is " + car); 8 Debug.Log("flag is " + flag); 9 Debug.Log("distance is " + distance); 10 Debug.Log("distance text is " + distance.GetComponent<Text>()); 11}

car、flag、distance、distanceのTextコンポーネント
全部とれてるか確認しましょう

投稿2022/03/16 05:24

hogefugapiyo

総合スコア3302

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

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

takahi_1000

2022/03/16 09:17

ありがとうございます。 帰宅後確認します
takahi_1000

2022/03/16 15:31

distanceのTextコンポーネントがとれていませんでした! 解決するためのコード例助かりました。
guest

0

情報が足りないなか推測して当てにいってみると、以下のどれかでしょう。

  1. "car" という名前の GameObject がない(例: Car だったりするかも)
  2. "Distance" という名前の GameObject がない(distance かもしれない)
  3. "Distance" という名前の GameObject はあるが、その GameObject に Text コンポーネントが追加されていない

備考

質問に貼り付けてあるコードが見づらいし、インデントもめちゃくちゃです。markdown を正しく使って下さい。投稿した後は見直してください。

エラーに表示されている行番号は、何行目で問題が起きたかを示しています。自分の目の前で動いていれば、どこが悪いのかすぐにわかります。しかし、質問された側からするとそれがわかりません。なので、問題が起きた行がどの行なのかを質問内に明示してください。

知っているかもしれませんが、プログラムでは大文字と小文字を区別します。例えば Car と car は別物として扱われます。

unityのオブジェクトと名前は一致しています

「初心者」なので、これが正しくできているか疑問です。できていることを示すスクリーンショットなどをつけるとよいでしょう。

投稿2022/03/16 04:43

bboydaisuke

総合スコア5275

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

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

takahi_1000

2022/03/16 09:16

回答ありがとうございます 帰宅後確認します
takahi_1000

2022/03/16 15:34

distanceのTextコンポーネントがとれていなかったのが問題だったみたいです これから質問するときは指摘されたことを参考にします
bboydaisuke

2022/03/16 16:35

"Distance" という名前の GameObject はあるが、その GameObject に Text コンポーネントが追加されていなかった、ということですね。 回答にも書きましたが、大文字と小文字は区別されますので注意してください。
guest

0

自己解決

解決前 Text -Text Mesh Pro でUIを作成していたらdistanceのTextコンポーネントが取得できない

解決方法 下のほうにあるLegacy のTextでUIを作成したらdistanceのTextコンポーネントが取得できたイメージ説明

投稿2022/03/16 15:42

takahi_1000

総合スコア8

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問