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

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

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

Q&A

解決済

1回答

2106閲覧

unity ボタンを押したらオブジェクトを動かすようにしましたがエラーが出ます

shibashi

総合スコア10

0グッド

0クリップ

投稿2019/07/17 13:50

前提・実現したいこと

ブロック崩しを作る過程で、
ボタンを押したらボールが動き始めるようにしようとしています。

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

ボタンを押すと、NullReferenceException: Object reference not set to an instance of an objectとエラーが出ます。

イメージ説明

Ballのソースコード

C#

1using UnityEngine; 2using UnityEngine.UI; 3using System.Collections; 4 5public class BallScript : MonoBehaviour { 6 7 public static int balltype; 8 9 // Use this for initialization 10 void Start () { 11 balltype = 1; 12 //StartMove(); 13 } 14 15 public void StartMove(){ 16 17 var body = gameObject.GetComponent<Rigidbody2D>(); 18 var canvas = GetComponentInParent<Canvas>(); 19 var direction = new Vector2(1, 1).normalized; 20 body.velocity = direction * 480 * canvas.transform.localScale.x; 21 } 222324

Buttonのソースコード

C#

1using UnityEngine; 2using System.Collections; 3 4public class ButtonScript : MonoBehaviour { 5 6 /// ボタンをクリックした時の処理 7 public void OnClick() 8 { 9 Debug.Log("Button click!"); 10 var ball = GetComponent<BallScript>(); 11 ball.StartMove(); 12 } 13}

ゲームスタートの手法で、より良い方法をご存じの方がいらっしゃいましたら、
そちらについても教えていただけたら嬉しいです。

以上よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

cs

1 var ball = GetComponent<BallScript>(); 2 ball.StartMove();

これ参照取れてますか?
この書き方だとボタンに対してもBallScriptがアタッチされていないとコンポーネント参照できなくてエラーになるかと思います。

手っ取り早いのは参照をつけちゃうことなので、こんな感じでインスペクターからアタッチしちゃうとかですかね

cs

1using UnityEngine; 2using System.Collections; 3 4public class ButtonScript : MonoBehaviour { 5 6 [SerializeField] BallScript ball; 7 8 /// ボタンをクリックした時の処理 9 public void OnClick() 10 { 11 Debug.Log("Button click!"); 12 //var ball = GetComponent<BallScript>(); 13 ball.StartMove(); 14 } 15} 16

投稿2019/07/18 00:27

hogefugapiyo

総合スコア3302

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

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

shibashi

2019/07/19 09:47

無事求める挙動にすることができました。 早急にご回答いただきありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問