using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Study6_Error : MonoBehaviour
GameObject target; // 퍼블릭이 아닌 상태의 미할당 변수
//게임을 실행할 수는 있지만 시작시 nullRefrenceException 에러가 나타난다. 레퍼런스가 null이다
// = 값이 없는 변수를 사용하여 발생하는 에러이다.
public GameObject target2; // 퍼블릭 상태의 미할당 변수
public GameObject Dllight; // dl 라이트의 light 컴포넌트를 담을 변수, Missing 오류 예시용
// 이후 유니티 인스펙터창에서 DL light 오브젝트를 할당해주었음.
// Start is called before the first frame update
void Start()
{
Destroy(Dllight); // Dllight 오브젝트를 삭제
print(target.name); // nullRefrenceException 에러 발생
// nullRefrence에러가 뜬 상황에서, 둘 중 값을 할당하지 않으면 에러가 발생하는 변수는 target이다.
// int, float, char, string, bool과 같은 기본 자료형은 값을 할당 안해도 기본 값이 자동으로 부여 된다.
//하지만 위의 target은 GameObject 자료형으로써 기본 값이 할당되지 않으면 문제가 발생 한다.
// 이 때 비어있는 변수가 public 상태면 UnassignedReferenceException라는 에러가 발생한다.
print(target2.name); // public 상태의 할당하지 않은 변수의 값 출력 = UnassignedReferenceException 에러 발생
// OutOfRange 에러는 '범위를 벗어난' 이라는 뜻으로써 배열과 같이,
// 크기가 있는 수의 접근 가능한 범위를 벗어났을 때 발생하는 에러.
// 배열 외에도 모든 상황에서 범위 외의 영역에 접근하려 하면 발생하는 에러이다.
int[] array = { 1, 3, 5 };
print(array[10]); // 배열의 범위를 벗어난 인덱스 사용, IndexOutOfRangeException 에러
}
// Update is called once per frame
void Update()
{
print(Dllight.name); // Dllight 오브젝트의 이름을 출력, 하지만 위에서 Destroy 했기 때문에 Missing 에러가 발생
}
// 코드는 위아래 아래로 진행되기에, 오류 뒤에 Exception붙으면 그 다음 코드들은 실행되지 않고 그 자리에서 멈춘다.
}