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

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

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

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

Unity

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

Q&A

解決済

2回答

1103閲覧

unityでエラーが出たのですが対処法がわかりません。

sumeshi

総合スコア5

C#

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

Unity

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

0グッド

0クリップ

投稿2021/05/24 08:24

編集2021/05/24 08:56

前提・実現したいこと

unityを使いゲーム開発したいんですけど、どこが間違っているのかわかりません。

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

NullReferenceException: Object reference not set to an instance of an object GameDirector.Update () (at Assets/GameDirector.cs:24) ↓この文が24行目です。 this.distance.GetComponent<Text>().text = "ゴールまで" + length.ToString("F2") + "m";

該当のソースコード

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class GameDirector : MonoBehaviour { GameObject car; GameObject flag; GameObject distance; // Start is called before the first frame update 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"; } }

試したこと

エラー文の内容を検索してみたのですが、自身のソースコードと似たような使い方をして、エラーになった例が確認できませんでした。
初学者なところもあり、見落としている部分や、勘違いしている場合などございますがご容赦ください。

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

わかりません。

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

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

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

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

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

K_3578

2021/05/24 08:32

調べたけどよく分かりませんでしたで他ユーザーがわかると思いますか? 何かキーワードで検索して、記事などを見たりはしたのですよね? ならばどういうキーワードで検索してどういう記事を見て何が分からなかったのかを明確に 書いて下さい。
sumeshi

2021/05/24 08:49 編集

申し訳ございません。 エラーメッセージの内容の行番号などを消して一度検索してみましたが似たようなソースコードでエラーになっている記事を確認することができませんでした。
sumeshi

2021/05/24 09:08

解決いたしました。ご指摘通り、伝えることを疎かにしていた部分がありました。 お時間とっていただきありがとうございました。
guest

回答2

0

まずは、
this.distance.GetComponent<Text>()
の結果がnullなのかチェックしよう

投稿2021/05/24 08:28

y_waiwai

総合スコア87800

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

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

sumeshi

2021/05/24 08:29

すみません、どこでチェックできるのか教えていただいてもいいですか?
y_waiwai

2021/05/24 08:32

VisualStudioを使ってるなら、ブレークポイント設定して好きなところで止めれるんで、そこで止めてナカミを確認しよう
sumeshi

2021/05/24 08:42

length 14.5 float + this "GameDirector (GameDirector)" GameDirector this.distance null UnityEngine.GameObject このようになったんですけど、初心者なこともあり、説明ややり方に不十分なところもあると思いますがよろしくお願いします。
sumeshi

2021/05/24 09:07 編集

解決いたしました。教えていただきありがとうございました。 お時間とっていただきありがとうございました。
guest

0

ベストアンサー

NullReferenceExceptionなんで、参照がNull(見つからない)です
わからないときはDebug.Logで参照が取れているかを確認してみると良いでしょう

cs

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

投稿2021/05/24 08:30

hogefugapiyo

総合スコア3302

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

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

sumeshi

2021/05/24 08:36

// debug用 から以下をコピーしてビルドしてみたところ以下のようなエラーなりました。初心者なのでわからないことが多いですがすみません。 dist > UnityEngine.Debug:Log(Object) GameDirector:Start() (at Assets/GameDirector.cs:20) NullReferenceException: Object reference not set to an instance of an object GameDirector.Start () (at Assets/GameDirector.cs:21) NullReferenceException: Object reference not set to an instance of an object GameDirector.Update () (at Assets/GameDirector.cs:28)
hogefugapiyo

2021/05/24 08:51

「dist > 」ってなってるのでそもそもオブジェクトが見つかってません。シーン上に「Distance」と完全に一致したオブジェクトがアクティブな状態で配置されていますか?
sumeshi

2021/05/24 09:07

解決いたしました。 「dist > 」となっているときはオブジェクトがみつかっていない状態なのですね。 ご指摘のあったところを色々いじっていたら動くようになったこともあり、ベストアンサーさせていただきます。お時間とってくださりありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問