티스토리 뷰

반응형

NullReferenceException 에러는 GameObject.SetActive(false)를 사용할 때 마주칠 수 있는 에러인데요. 생각보다 쉽게 마주하는 것 같아 정리합니다.

 

반응형

Unity NullReferenceException Error

에러문구

NullReferenceException: Object reference not set to an instance of an object
OnCollision_Show.OnCollisionEnter2D (UnityEngine.Collision2D collision...

 

해결방법

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

// 충돌하면 표시한다 
public class OnCollision_Show : MonoBehaviour {

    public string targetTagName;    // 목표 태그 이름 : Inspector에 지정
    public string showObjectName;   // 표시 오브젝트 이름 : Inspector에 지정

    GameObject showObject;

    void Start() { 
        // 지우기 전에 표시 오브젝트를 기억해 둔다 
        showObject = GameObject.Find(showObjectName);
        showObject.SetActive(false); // 지운다
    }

    void OnCollisionEnter2D(Collision2D collision) { 
        // 만약 충돌한 것의 이르이 목표 태그면 
        if (collision.gameObject.tag == targetTagName)
        {
            showObject.SetActive(true); // 지웠던 것을 표시한다 
        }
    }
}

Object.SetActive(false)를 하는 스크립트에서 Start()단계에서 GameObject.Find()를 통해 해당 게임 오브젝트를 기억하고 있도록 한 후 Object.SetActive(true)를 하면 해당 에러를 해결할 수 있다.

반응형
댓글