一つのスクリプトで作ったメソッドを、他のスクリプトから呼び出したいのですがうまくいきません。
どこがまずいのか教えてください。
これが最初につくったスクリプトです。
using
1using System.Collections.Generic; 2using UnityEngine; 3 4public class Sample : MonoBehaviour 5{ 6 public float xspeed; 7 public float yspeed; 8 9 GameObject cir; 10 GameObject cup; 11 GameObject squ; 12 13 Rigidbody2D rigidcir; 14 Rigidbody2D rigidcup; 15 Rigidbody2D rigidsqu; 16 17 18 private void Start() 19 { 20 cup = GameObject.Find("Capsule"); 21 cir = GameObject.Find("Circle"); 22 squ = GameObject.Find("Square"); 23 Debug.Log(cir); 24 rigidcir = cir.GetComponent<Rigidbody2D>(); 25 rigidsqu = squ.GetComponent<Rigidbody2D>(); 26 rigidcup = cup.GetComponent<Rigidbody2D>(); 27 } 28 29 30 private void Update() 31 { 32 //Move(); 33 } 34 35 36 public void Move()//これを呼び出したい 37 { 38 cir.transform.Translate(-xspeed, -yspeed, 0); 39 squ.transform.Translate(-xspeed, -yspeed, 0); 40 Debug.Log(cir); 41 } 42 43 44 45 46 47 private void OnTriggerEnter2D(Collider2D collision) 48 { 49 Debug.Log("ゴール"); 50 } 51 52 53} 54 55コード
次に、上のMove();を呼び出すためのスクリプトです。
using
1using System.Collections.Generic; 2using UnityEngine; 3 4public class GameManager : MonoBehaviour 5{ 6 7 Sample samp = new Sample(); 8 9 void Start() 10 { 11 12 } 13 14 15 16 void Update() 17 { 18 samp.Move(); 19 } 20} 21 22コード
エラーは以下のように出ます。
「NullReferenceException: Object reference not set to an instance of an object
Sample.Move () (at Assets/Scripts/Sample.cs:40)
GameManager.Update () (at Assets/Scripts/GameManager.cs:19)」
以前にも似たようなエラーが出たのですが、そのときはスクリプトをオブジェクトにアタッチし忘れていました。
今回はそれも忘れないようにしています。
Debug.Log(cir);のcirには予定通り"circle"が入っていました。
よろしくおねがいします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/03/26 07:30