実現したいこと
オブジェクトを生成するときに、ScriptableObjectに保存してあるスプライトをランダムで読み込み、反映させる
発生している問題・分からないこと
オブジェクトを生成するときに、ScriptableObjectに保存してあるスプライトをランダムで読み込み、反映させるプログラムを書きたいが、このようなエラーが表示されて実装できない
エラーメッセージ
error
1NullReferenceException: Object reference not set to an instance of an object 2SpriteDirector.ChangeSprite () (at Assets/SpriteDirector.cs:20) 3TargetGenerator.Update () (at Assets/TargetGenerator.cs:27)
該当のソースコード
SpriteDirector
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class SpriteDirector : MonoBehaviour 6{ 7 [SerializeField] CharaDataAsset charaDatas; 8 SpriteRenderer sr; 9 GameObject cl; 10 // Start is called before the first frame update 11 void Start() 12 { 13 this.cl = GameObject.FindWithTag("chara"); 14 } 15 16 // Update is called once per frame 17 public void ChangeSprite() 18 { 19 int ra = Random.Range(0, 22); 20 cl.GetComponent<SpriteRenderer>() .sprite = charaDatas.dataList[ra].graffic; 21 } 22} 23
TargetGenerator
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class TargetGenerator : MonoBehaviour 6{ 7 public GameObject targetPrefab; 8 public float span = 3.0f; 9 public float delta = 0; 10 11 // Start is called before the first frame update 12 void Start() 13 { 14 Application.targetFrameRate = 60; 15 } 16 17 // Update is called once per frame 18 void Update() 19 { 20 delta += Time.deltaTime; 21 if (delta > span) 22 { 23 delta = 0; 24 GameObject go = Instantiate(targetPrefab); 25 go.transform.position = new Vector3(16, 0, 0); 26 GameObject director = GameObject.Find("SpriteDirector"); 27 director.GetComponent<SpriteDirector>().ChangeSprite(); 28 } 29 30 } 31}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
Googleでエラーメッセージを検索しましたが、解決策は見つかりませんでした
補足
Unity: 2022.3.11f1
「SpriteDirectorの20行目のどれかの変数がnull」という意味です。
どれがnullかはデバッガなどで調べてください。
コメントありがとうございます。試してみましたがどこがnullかわかりませんでした。
nullになっていると考えられるのは、以下の通りです。
全て確認しましたか?
- cl
- cl.GetComponent<SpriteRenderer>()
- cl.GetComponent<SpriteRenderer>().sprite
- charaDatas
- charaDatas.dataList
- charaDatas.dataList[ra]
- charaDatas.dataList[ra].graffic
回答1件
あなたの回答
tips
プレビュー