
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
혼자 추측해본 바로는 Rain.cs에서 Gamemanager.cs를 읽어들이지 못하는 것 같은데(인텔리센스 자체가 안됩니다), 무엇이 문제일까요? 에러메시지와 Rain.cs, Gamemanager.cs 전문 첨부하겠습니다.
작성한 코드 및 에러 메세지
NullReferenceException: Object reference not set to an instance of an object
GameManager.AddScore (System.Int32 score) (at Assets/Scripts/GameManager.cs:36)
Rain.OnCollisionEnter2D (UnityEngine.Collision2D collision) (at Assets/Scripts/Rain.cs:62)
<GameManager.cs>
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GameManager : MonoBehaviour
{
public static GameManager Instance;
public GameObject rain;
public Text totalScoreTxt;
int totalScore;
// Start is called before the first frame update
void Start()
{
InvokeRepeating("MakeRain", 0, 1f);
}
// Update is called once per frame
void Update()
{
}
void MakeRain()
{
Instantiate(rain);
}
void Awake()
{
Instance = this;
}
public void AddScore(int score)
{
totalScore += score;
totalScoreTxt.text = totalScore.ToString();
}
}
<Rain.cs>
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Rain : MonoBehaviour
{
float size;
int score;
SpriteRenderer renderer;
// Start is called before the first frame update
void Start()
{
renderer = GetComponent<SpriteRenderer>();
float x = Random.Range(-2.4f, 2.4f);
float y = Random.Range(3.0f, 5.0f);
transform.position = new Vector3(x, y, 0);
int type = Random.Range(1, 4);
if (type == 1)
{
size = 0.8f;
score = 1;
renderer.color = new Color(100 / 255f, 100 / 255f, 1f, 1f);
}
else if (type == 2)
{
size = 1.0f;
score = 2;
renderer.color = new Color(130 / 255f, 130 / 255f, 1f, 1f);
}
else if (type == 3)
{
size = 1.2f;
score = 3;
renderer.color = new Color(150 / 255f, 150 / 255f, 1f, 1f);
}
transform.localScale = new Vector3(size, size, 0);
}
// Update is called once per frame
void Update()
{
}
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Ground"))
{
Destroy(this.gameObject);
}
if (collision.gameObject.CompareTag("Player"))
{
Destroy(this.gameObject);
GameManager.Instance.AddScore(score);
}
}
}
오류 발생 시, 작성한 코드 전체와 에러 메시지를 첨부해 주세요.
Tip 1) </> 아이콘을 눌러 코드박스를 만들어 보세요.
Tip 2) Ctrl+A(맥의 경우 Command+A) 단축키로 코드를 한 번에 선택할 수 있어요!
