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

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

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

参照は、プログラミングにおいて変数や関数といったメモリ空間上での所在を指示するデータのことを指します。その中にはデータ自体は含まれず、他の場所にある情報を間接的に指示するプログラムです。

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

Unity

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

Q&A

解決済

2回答

1392閲覧

[Unity2D]正常に動いているのにNullReferenceExceptionエラーが出ている

omaetoomae

総合スコア41

参照

参照は、プログラミングにおいて変数や関数といったメモリ空間上での所在を指示するデータのことを指します。その中にはデータ自体は含まれず、他の場所にある情報を間接的に指示するプログラムです。

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

Unity

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

0グッド

0クリップ

投稿2021/09/24 14:24

###内容
ゲームオーバーになったら自分のスコアを表示させるというスプリクトを作っていて、「GameObject.Find」や「GetComponent」は最初のStart関数内でキャッシュさせたほうが処理が軽くなるということを知り、3つのスプリクトを同じように変更したところなぜか1つのスプリクトにだけNullエラーが出てきているのですが、問題なく動作するのです。
###エラーコード

NullReferenceException: Object reference not set to an instance of an object

###ソースコード
↓唯一エラーが出てきているスプリクト(一部省略)

Yourscore

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class Yourscore : MonoBehaviour 7{ 8 //省略 9 private Text t;//←privateにしている 10 void Start() 11 { 12 t = GameObject.Find("YourScore").GetComponent<Text>();//←ここにエラー 13 } 14 //省略 15}

↓ほかの2つのスプリクト(一部省略)

TimerMa

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class TimerMa : MonoBehaviour 7{ 8 //省略 9 private Text t;//←privateにしている 10 void Start() 11 { 12 t = GameObject.Find("Timer").GetComponent<Text>(); 13 } 14 //省略 15}

ScoreMa

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5public class ScoreMa : MonoBehaviour 6{ 7 //省略 8 private Text t;//←privateにしている 9 void Start() 10 { 11 t = GameObject.Find("Score").GetComponent<Text>(); 12 } 13 //省略 14}

###調べたこと
オブジェクトの参照が設定されていないとエラーで示されていますが、そもそもprivateにしているため設定しようにもできないと困っています...
###開発環境
Windows10 Pro
Unity 2021.2.0b8

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

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

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

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

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

guest

回答2

0

自己解決

もともとは空のオブジェクトにスプリクトを付けていたのですが、YourScoreが入っているキャンバス自体にスプリクトを付け替えたところ、エラーが出なくなりました!

投稿2021/09/26 01:57

omaetoomae

総合スコア41

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

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

0

YourScoreという名称のGameObjectがヒエラルキーにありますか。名前が間違えてる可能性があります。

また、privateでも[SerializeField]をつけることでInspectorで割当てられるようになります。

投稿2021/09/24 14:36

YOshim

総合スコア1085

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問