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

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

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

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

1回答

787閲覧

unityC#エラー

012304

総合スコア13

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2021/09/25 16:18

編集2021/09/26 01:52

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
unityで接地判定を書いていたのですがなぜかエラーが出てしまってこのエラーってどうすれば直りますか?なぜ出たのかも教えてくださいお願いします

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

エラーメッセージ NullReferenceException: Object reference not set to an instance of an object PlayerBan.Update () (at Assets/Bandits - Pixel Art/Scripts/PlayerBan.cs:77)

該当のソースコード

ここに言語名を入力unity C#
ソースコード
#region//インスペクターで設定する
[Header("速度")] public float speed;
[Header("ジャンプ速度")] public float jumpSpeed;
[Header("重力")] public float gravity;
[Header("ジャンプ制限時間")] public float jumpLimitTime;
[Header("ジャンプの高さ")] public float jumpHeight;
[Header("接地判定")] public GroundCheck ground;
//[Header("頭をぶつけた判定")] public GroundCheck head;
[Header("ダッシュの速さ表現")] public AnimationCurve dashCurve;
[Header("ジャンプの速さ表現")] public AnimationCurve jumpCurve;
[Header("ジャンプする時に鳴らすSE")] public AudioClip jumpSE;
[Header("やられた時のSE")] public AudioClip downSE;
[Header("コンティニューしたときのSE")] public AudioClip continueSE;

void Update() { ここが77行目です→ m_grounded = ground.IsGround(); float X = Input.GetAxisRaw("Horizontal"); //各種座用軸の速度を求める float xSpeed = GetXSpeed(); float ySpeed = GetYSpeed(); anim.SetFloat("AirSpeed", rb.velocity.y); //Run if (Mathf.Abs(X) > Mathf.Epsilon) anim.SetInteger("AnimState", 2); //Combat Idle else if (combatIdle) anim.SetInteger("AnimState", 1); //Idle else anim.SetInteger("AnimState", 0); Movement(); }
下からGroundCheckのスクリプトです private string groundTag="Ground"; private bool isGround = false; private bool isGroundEnter, isGroundStay, isGroundExit; public bool IsGround() { if (isGroundEnter || isGroundStay) { isGround = true; } else if (isGroundExit) { isGround = false; } isGroundEnter = false; isGroundStay = false; isGroundExit = false; return isGround; }

試したこと

ここに問題に対して試したことを記載してください。

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

Header("接地判定")] public GroundCheck ground;設定はしてます77行目でエラーと出ていてチェックしたのですがうまくいかなくて編集追加依頼してくださってありがとうございます初めて使ったので勝手がわからずすいませんでした確かにインスペクターで設定していませんでした

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/09/25 23:11

コードは ``` と ``` で囲ってください(``` はバッククオート 3 つ)。インデントされて見易くなるので。インデントされてないコードはあなたも読む気がしないのでは? どの行で NulllReferenceExpection が出るのか質問に追記しましょう。 デバッガを使って何が null になっているのか調べましょう。デバッガが使えるのは質問者さんだけ。
YAmaGNZ

2021/09/25 23:37

groundはインスペクターで設定するとありますが、設定しましたか?
guest

回答1

0

ベストアンサー

Unity に詳しくないですが、エラーの原因としては変数 ground が null の為に出ていると思われます。

NullReferenceException: Object reference not set to an instance of an object
NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません

C#

1m_grounded = ground.IsGround();

対処方法についてはこちらが参考にならないでしょうか。

■ 【Unity】NullReferenceExceptionのエラーと対策
http://kimama-up.net/unity-nullreferenceexception/

投稿2021/09/25 18:47

cx20

総合スコア4648

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

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

012304

2021/09/26 08:04

ありがとうございました編集追加依頼の方々もありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問