FindChild() 함수 이용 중 오류
Util 스크립트에서 만든 FindChild() 함수를 UI 오브젝트가 아닌 다른 오브젝트에서도 사용하고 싶어 사용하던 중 문제가 발생하여 질문이 있습니다.
FindChild() 함수의 리턴 값이 null이 되면 이후의 코드들이 실행이 안되던데 이유를 모르겠습니다.
void OnEnable()
{
partToRotate = Util.FindChild(gameObject, "PartToRotate", true).transform;
firePoint = Util.FindChild(gameObject, "FirePoint", true).transform;
// 이후의 코드들
}위의 partToRotate와 firePoint 변수는 OnEnable() 함수에서는 사용되는 일이 없고 Update() 함수에서 사용됩니다. Update 함수에서 변수 값이 null로 인해 오류가 나는 거면 이해를 하겠는데, OnEnable() 함수에서 FindChild() 함수의 리턴 값이 null이 되면 왜 이후의 코드들이 실행이 안되는지 모르겠습니다.
널 조건 연산자인 ?로 해결은 했으나, 왜 안되는지 이유가 궁금합니다.
Answer 1
0
디버깅을 해보세요. Util.FindChild에 breakpoint를 걸고
F11으로 하나 하나 들어가서 어디서 null 리턴하는지 확인해보세요.
사람들이 디버깅을 못하는 상태로 개발을 하려 하는데
그러면 버그 하나라도 났을 때 더 이상 진행을 못하는 상황이 됩니다.
그리고 위에 말씀주신 문제의 상황은 .transform을 사용하기 때문에,
없는 객체의 멤버 변수를 사용해서 그런 것으로 보이네요!
널 조건자? 은 객체가 null인 경우 .transform이 사실상 null로 바뀌어서 문제가 없는 것입니다.
결국 객체.transform에서 객체가 null이면 바로 크래시가 나는 것이죠.
Pivot을 마우스로 클릭하고 드래그해도 움직이 않아서 혹시 아시는 부분이 있나 해서 문의 남깁니다.
0
4
0
ResourceManager 클래스 관련 질문
1
39
2
몬스터 HP 게이지바 이동
0
24
1
매니저 관련 질문이 있습니다.
0
74
2
비쥬얼 스튜디오에서 unity연결이 없습니다.
0
82
2
UI 기능 관련 질문이 있습니다!
0
74
2
픽셀 좌표 스크린 좌표
0
58
0
전체적으로 코드 읽는게 굉장히 오래 걸리네요...
0
108
2
카메라 #2 수업 캐릭터 쓰러짐 해결
0
97
1
플레이어 움직임이 끝날때, 기울어짐 현상
0
104
1
Input 적용과 관련하여 질문 있습니다.
0
94
1
디버그 불가.. Unity에 연결 불가
0
102
1
달리기 애니메이션 에러
0
100
2
오랜만에 게임을 만들다가 사운드 관련해서 뭔가 궁금한게 있어서 봤습니다
0
75
1
GetKey 오류
0
132
2
에셋을 어디에 올려두신지 알 수 있나요?
0
115
1
재귀호출? 오류나는데 왜 이래요 ?
0
183
6
Animation blending 파라미터 계산
0
77
1
newPos와 to지점이 겹쳐져야 하는거 아닌가요?
0
114
3
오브젝트 복제하니까 자꾸 이런게 뜨면서 꺼집니다
0
97
2
질문있습니다
0
160
2
아 이거 소스코드 같은거 없나요?
0
152
3
질문 드립니다. string.IsNullOrEmpty(name)
0
94
2
@Managers 가 씬에 배치되어 있어도 문제가 되지 않나요?
0
139
2

