2024. 5. 28. 21:24ㆍ나의 개발자 기록/본 캠프 개발 일지

2024년 5월 28일 화요일
What I did today


오늘도 9시부터는 스탠다드반 문제를 푸는 시간을 가졌는데, 이번 문제에 대한 내용이 강의를 복습하는 내용이었기 때문에 저는 9시부터 바로 개인 과제를 시작했습니다. 일단 제일 먼저 개인 과제에서 사용하기 좋은 에셋을 찾기 시작했고, 가성비 좋은 유료 에셋도 사고, 이번 과제에 쓸만한 에셋을 gitignore로 무시한 뒤에 import해서 사용해봤습니다. 또한 강의 때 사용하던 유니티 패키지를 바탕으로 강의 내용을 복습할 겸 다시 들어보면서 과제 구현 사항인 플레이어의 이동과 점프에 대해 구현을 했습니다.



그다음에는 플레이어의 상태 UI를 다시 만들어보면서 복습했습니다. 그리고 에셋에 있던 애니메이션을 추가도 해보고, 체력이 깎이는 로직이나 배고픔이 시간에 따라서 닳는 시스템 등등 강의를 바탕으로 다시 한번 만들어보았습니다.

개인 과제에서 플레이어와 관련된 기본 기능을 끝내고 나서 구현해야할 필수 사항들을 보니깐 강의를 바탕으로 캐릭터 점프대나 강의에서 만들었던 아이템 외에 다른 아이템을 만들어야하는 것 같았기에 일단은 저녁을 먹고 난 후에 아이템 데이터를 관리할 수 있는 시스템을 만들어 두었습니다. 내일은 일단 강의를 다시 보면서 인벤토리 시스템과 상호작용을 구현하고 나서 다양한 아이템 추가와 캐릭터가 밟을 때 높이 튀어 오를 수 있는 점프대를 만들어야겠습니다. 또한 시간이 남는다면 선택 요구 사항에서 간단한 것 위주로 구현해야할 것 같습니다.
TryGetComponent에 대해서
TryGetCompnent란?

- Unity에서 제공하는 메서드로, 게임 오브젝트(GameObject)에서 특정 컴포넌트를 안전하게 가져오는 데 사용된다.
- 이 메서드는 컴포넌트가 존재하지 않을 때 발생할 수 있는 null 참조 오류를 방지하는 데 유용하다.
TryGetComponent는 다음과 같은 시그니처를 가지고 있다.
public bool TryGetComponent<T>(out T component);
여기서 T는 가져오려는 컴포넌트의 타입이다. 이 메서드는 컴포넌트를 성공적으로 가져왔는지 여부를 나타내는 bool 값을 반환하고, out 매개변수를 사용하여 컴포넌트를 할당한다.
사용 예제
void Start()
{
Rigidbody rb;
// Rigidbody 컴포넌트를 시도해서 가져옵니다.
if (gameObject.TryGetComponent<Rigidbody>(out rb))
{
// Rigidbody 컴포넌트가 있는 경우, rb 변수를 통해 접근할 수 있습니다.
Debug.Log("Rigidbody component found!");
}
else
{
// Rigidbody 컴포넌트가 없는 경우
Debug.Log("Rigidbody component not found.");
}
}
위 코드에서 TryGetComponent 메서드는 gameObject에서 Rigidbody 컴포넌트를 시도해서 가져온다. 컴포넌트가 존재하면 true를 반환하고, rb 변수에 해당 컴포넌트를 할당한다. 컴포넌트가 존재하지 않으면 false를 반환하고, rb 변수는 null 상태로 유지된다.
장점
1. 안전성 : GetComponent 메서드와 달리 TryGetComponent는 컴포넌트가 존재하지 않을 때 발생할 수 있는 null 참조 오류를 방지할 수 있다.
2. 성능 : TryGetComponent는 GetComponent와 유사한 성능을 제공하며, 추가적인 예외 처리가 필요 없기 때문에 코드가 더 간결해진다.
'나의 개발자 기록 > 본 캠프 개발 일지' 카테고리의 다른 글
| 2024년 5월 30일 목요일 개발일지 / 개인 프로젝트 최종 정리 (0) | 2024.05.30 |
|---|---|
| 2024년 5월 29일 수요일 개발일지 / 개인 과제 진행 상황과 느낀 점 (0) | 2024.05.29 |
| 2024년 5월 27일 월요일 개발일지 / GetComponent에 대해서 (0) | 2024.05.27 |
| 2024년 5월 24일 금요일 개발일지 / 유니티 숙련 주차와 Unity Input System 에 대해서 (0) | 2024.05.24 |
| 2024년 5월 23일 목요일 개발일지 / 팀 프로젝트 발표와 회고, SOLID 원칙에 대해서 (0) | 2024.05.23 |