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

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

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

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

Null

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

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

Q&A

解決済

1回答

1009閲覧

【Unity2D】nullエラーの対処 スコア加算のやり方

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

Null

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

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

0グッド

0クリップ

投稿2021/05/19 16:23

編集2021/05/20 12:54

前提・実現したいこと

野菜を箱に入れてポイントを稼ぐミニゲームを作成しようとしています。
tomatoをtomatoboxに入れる際にポイントが加算されるよう設定したいのですが、以下のエラーが出てしまいうまくいきません。
よろしければ解決法を教えていただきたいです。

エラーメッセージ

NullReferenceException: Object reference not set to an instance of an object tomatobox.OnTriggerEnter2D (UnityEngine.Collider2D other) (at Assets/SCRIPT/tomatobox.cs:17### using System.Collections; using System.Collections.Generic; using UnityEngine; 該当スクリプト↓ using System.Collections; using System.Collections.Generic; using UnityEngine; public class tomatobox : MonoBehaviour { GameObject director; void Start() { this.director = GameObject.Find("GameDirector");} void OnTriggerEnter2D(Collider2D other) { if (other.gameObject.tag == "tomato") { Destroy(other.gameObject); this.director.GetComponent<GameDirector>().Gettomato(); } } 参照先のGameDirectorのスクリプト↓ using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.UI; public class GameDirector : MonoBehaviour { GameObject timerText; GameObject pointText; float time = 60.0f; int point = 0; public void Gettomato() { this.point += 100; } public void Getonion() { this.point += 100; } public void Getpiman() { this.point += 100; } public void Getnasu() { this.point += 100; } void Start() { this.timerText = GameObject.Find("Time"); this.pointText = GameObject.Find("Point"); } void Update() { this.time -= Time.deltaTime; this.timerText.GetComponent<Text>().text = this.time.ToString("F1"); this.pointText.GetComponent<Text>().text = this.point.ToString() + " point"; } } ```c# ソースコード ### 試したこと ・Findで呼び出しているオブジェクト"GameDirector"がシーンにあるかの確認 ・"GameDrector"の綴りはスクリプト内、オブジェクト名で一致しています。 ### 補足情報(FW/ツールのバージョンなど) エラー箇所 this.director.GetComponent<GameDirector>().Gettomato(); GameDirectorは残り時間とポイントを設定するスクリプトです。 tomatoをtomatoboxに入れた時(当たり判定が衝突した時)に100ポイントが入るようにしたいです。 4冊ぐらい参考書を抱えながら作っているド初心者のため拙い部分多々あるかと思います。 不足情報等あればご指摘願います。

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

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

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

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

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

f-rank

2021/05/19 17:24

・GameDirectorスクリプトがGameDirectorオブジェクトにアタッチされているか ・GameDirectorオブジェクトとtomatoboxをアタッチしているオブジェクトが同じシーンにあるか の2点を確認してみてください。
退会済みユーザー

退会済みユーザー

2021/05/19 17:44

ご連絡ありがとうございます。 上記2点確認いたしました。おそらく問題ないと思います。 作業スクリーンショットを本文に追加しましたので、お手数ですが念の為ご確認いただけますと幸いです...!
f-rank

2021/05/19 17:59

現時点で提示されている情報から分かる範囲では特に問題なさそうですが・・・。 tomatoboxに他の処理を書いていないのなら、あと考えられるとすればスクリプトの保存し忘れとかでしょうか。
退会済みユーザー

退会済みユーザー

2021/05/19 18:20

先程ご指摘いただいた内容がどちらもアタッチ関連だったため、その辺りを中心に色々と触って確認していたところ、tomatoboxのInspecterビューで、スクリプトのチェックボックスにチェックがついていなかったことに気がつきました...! とても初歩的な凡ミスで恐縮ですが、スクリプトの問題かと思い何時間も唸ってたので本当に助かりました。質問してよかったです、ありがとうございます。
sakura_hana

2021/05/20 00:05

解決済なら自己回答してベストアンサーを付け質問のクローズをお願いします。
guest

回答1

0

ベストアンサー

tomatoboxオブジェクトのInspecterビューで、スクリプトのチェックボックスにチェックがついていなかったせいでした。お騒がせしました。

投稿2021/05/20 12:58

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問