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

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

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

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

Q&A

解決済

4回答

2513閲覧

実行したら、NullReferenceExceptionというエラーが出ます。

退会済みユーザー

退会済みユーザー

総合スコア0

Unity

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

0グッド

0クリップ

投稿2019/08/08 02:05

編集2019/08/08 08:32

Unityで2Dアクションゲームを作っています。
ですが実行すると次のようなエラーが出ました。↓イメージ説明

c#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; // UI機能の利用に必要なusing文 5 6public class StageSelectManager : MonoBehaviour 7{ 8 9 // メンバ変数宣言 10 public Text text_BestTime_1; // ステージ1最速クリアタイム表示UI 11 public Text text_BestTime_2; // ステージ2最速クリアタイム表示UI 12 public Text text_BestTime_3; // ステージ3最速クリアタイム表示UI 13 14 // 起動時に1回だけ呼び出されるメソッド 15 private void Start() 16 { 17 // 最速クリアタイムをUIに表示 18 Data data = GameObject.Find("DataManager").GetComponent<Data>(); // データスクリプトを取得 19 text_BestTime_1.text = "BestTime : \n" + data.BestTime_01.ToString("F2"); 20 text_BestTime_2.text = "BestTime : \n" + data.BestTime_02.ToString("F2"); 21 text_BestTime_3.text = "BestTime : \n" + data.BestTime_03.ToString("F2"); 22 } 23 24 // SampleScene(バトル画面)へのシーン遷移を行うメソッド 25 // ボタン[StageButton_1]の入力時に呼び出される 26 public void TransitionScene_Stage1() 27 { 28 // SampleSceneをロードする 29 GameObject.Find("FadeManager").GetComponent<Fade>().TransitionScene("Stage1"); 30 GetComponent<AudioSource>().Play(); // ゲームオブジェクトに付いている効果音を再生する 31 } 32 // ボタン[StageButton_2]の入力時に呼び出される 33 public void TransitionScene_Stage2() 34 { 35 // SampleSceneをロードする 36 GameObject.Find("FadeManager").GetComponent<Fade>().TransitionScene("Stage2"); 37 GetComponent<AudioSource>().Play(); // ゲームオブジェクトに付いている効果音を再生する 38 } 39 // ボタン[StageButton_3]の入力時に呼び出される 40 public void TransitionScene_Stage3() 41 { 42 // SampleSceneをロードする 43 GameObject.Find("FadeManager").GetComponent<Fade>().TransitionScene("Stage3"); 44 GetComponent<AudioSource>().Play(); // ゲームオブジェクトに付いている効果音を再生する 45 } 46}

このコードの18行目がエラーになっています。
どこもスペルミスなどはないと思いますが、どうかご教授お願いします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/08/08 02:56

わかりました。
guest

回答4

0

ベストアンサー

まさか、無いとは思いますがエラーが出ているシーン内にStageSelectManager.csが付いているオブジェクトとDataManagerオブジェクトが両方ともありますでしょうか。
シーンが複数あるのとスペルミスは無さそうな感じなので、現状これくらいしか・・・。

投稿2019/08/08 05:48

simapiko

総合スコア332

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

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

退会済みユーザー

退会済みユーザー

2019/08/08 07:17

ご回答ありがとうございます。 StageSelectManager.csがついているオブジェクトとDataManagerオブジェクトが両方ある。。。 いえ、ないですね。
simapiko

2019/08/08 07:50 編集

GameObject.Find()はアクティブなオブジェクトが対象です。基本的に現在アクティブなシーン以外のオブジェクトは対象に入らないので、対象になるように対策しないといけません。 GameObject.Find https://docs.unity3d.com/ja/current/ScriptReference/GameObject.Find.html Scene切替時でもGameObject等を破棄せずに保持しておく方法https://qiita.com/srtkmsw/items/bf6a33d6bb2987c74936
退会済みユーザー

退会済みユーザー

2019/08/08 07:52

すみません。 上記のサイト二つとも開くことができませんでした。 スペルミスなどはありませんか?本当にすみません。。。
simapiko

2019/08/08 08:02 編集

あれ、本当ですか・・・? こちらの画面ではリンクが飛べるようになっているのですが、少し修正してたので、もしかしたら更新が反映されてないのかもしれません。 時間が経っても無理そうでしたら張り直しますので、お知らせください。
退会済みユーザー

退会済みユーザー

2019/08/08 08:02

すみません。本当にすみません。 今もう一回開いたらしっかりできました。参考にしてちょっとやってみますね。 ありがとうございます。出来上がったら報告します!
退会済みユーザー

退会済みユーザー

2019/08/08 08:17

すみません。よくわからなかったので質問を編集しますね。お手数ですがもう一度確認お願いします。
simapiko

2019/08/08 08:37

編集確認しました。 どの点が分からないのでしょうか?
退会済みユーザー

退会済みユーザー

2019/08/08 08:40

Data data = GameObject.Find("DataManager").GetComponent<Data>(); // データスクリプトを取得 この部分がエラーになるのでどうしてかと。
simapiko

2019/08/08 08:51

その部分は先ほども答えたのですが・・・。 他の方も答えられてますが、Unityに対して○○を使って!とお願いして、Unityはその時点で○○を持っていないので、いや今持ってないから使えないんだけど?と怒られている図(エラー)です。 持っていない理由と解決法は同じく先ほどリンクと共に書いてあるので、もう一度ご確認ください。
退会済みユーザー

退会済みユーザー

2019/08/08 08:53

すみません。ありがとうございます。。やってみます。。。
simapiko

2019/08/08 09:02

すみません、訂正です。 持ってない理由については、コメントで話しておりませんでした。(リンク先には書いてありますが) シーンを切り替えると表示されてないシーン(切り替え前のシーン)のオブジェクトはすべて破棄されます。 なので、別のシーンからオブジェクトを探そうとしても、切り替えた時点でUnity上では存在しないので、探しても見つけることが出来ません。 これは当然切り替えをしていなくても、該当シーンを読み込んですらいないので、そもそも生成されていません。 なので、オブジェクト探す処理が動く前に、オブジェクトを生成・破壊されないようにするという手順を踏む必要があります。 こんな感じで伝わりますでしょうか・・・?
退会済みユーザー

退会済みユーザー

2019/08/08 09:04

なるほど。わかりました。すごく丁寧な回答ありがとうございます。 しっかり伝わりましたよ。
simapiko

2019/08/08 09:12

伝えることが出来たようで安心です。 完成に少しでも近づけるよう応援してます。
退会済みユーザー

退会済みユーザー

2019/08/08 09:14

ありがとうございます(^^)
guest

0

DataManagerオブジェクトにDataクラスが付いていないんじゃないですかね。
Null Reference Exception - Unity マニュアル

(でもエラーが18行目で起こってるということはやっぱりDataManagerオブジェクトが無い気もします。
ヒエラルキーかインスペクターのスクリーンショットを上げて貰えると確認が取れるかと)

投稿2019/08/08 02:33

編集2019/08/08 02:38
sakura_hana

総合スコア11427

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

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

退会済みユーザー

退会済みユーザー

2019/08/08 02:41

ここにスクリーンショットを乗せる方法がわかりません。すみません。
退会済みユーザー

退会済みユーザー

2019/08/08 02:42

ここにスクリーンショットをのせる方法を教えてくださいますか?
sakura_hana

2019/08/08 04:51

コメントには載らないので質問を編集してください。
退会済みユーザー

退会済みユーザー

2019/08/08 05:00

わかりました。
退会済みユーザー

退会済みユーザー

2019/08/08 05:05

編集しました。
guest

0

「DataManager」という名前のゲームオブジェクトが見つからなかったということだと思います。

以下のことを確認してみてください。

  • 削除していないか?
  • 名前を変更していないか?
  • 非アクティブになっていないか?

投稿2019/08/08 02:16

nskydiving

総合スコア6500

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

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

退会済みユーザー

退会済みユーザー

2019/08/08 02:21

ご回答ありがとうございます。 すみません。削除もしていませんでした。名前も変更していませんでした。非アクティブにもなっていませんでした。
nskydiving

2019/08/08 06:16

試しに DataManager を作り直してみてはどうでしょうか?
退会済みユーザー

退会済みユーザー

2019/08/09 06:38

そうですね。初めから作り直してみます。ありがとうございました( ^_^)/~~~
guest

0

GameObject.Find("DataManager") でDataManagerの名前を持つものがありません
そのため、「ないもの」に対して、GetCocmponent しているというエラーになります

投稿2019/08/08 02:11

izmktr

総合スコア2856

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

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

退会済みユーザー

退会済みユーザー

2019/08/08 02:15

すみません。私Unity初心者なのでもう少しわかりやすくご教授お願いできますか? DataManagerというComponentがないということですか?
izmktr

2019/08/08 02:29

ないのは、Component ではなく 「その名前のGameObject」 です 具体的には、"DataManager"という名前がHierarchyにありますか?
退会済みユーザー

退会済みユーザー

2019/08/08 02:30

はいあります。 なんどもすみません。
izmktr

2019/08/08 05:00

少なくともUnityのシステムとして「ない」と言われているので、 あなたがどこをどの様に確認してないと言っているのか詳細に書く必要があると思いませんか?
退会済みユーザー

退会済みユーザー

2019/08/08 05:06

そうですね。わかりにくい返信ですみませんでした。 質問を今編集しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問