커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
1주차 점수올라가기에서 오류가 발생합니다
게임개발 종합반 v0
1주차
북마크
김*우
댓글
5
추천
0
조회수
18
조회수
18
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


혼자 추측해본 바로는 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) 단축키로 코드를 한 번에 선택할 수 있어요!




취소
 공유
취소
댓글 0
댓글 알림
나의얼굴