2024. 5. 27. 21:03ㆍ나의 개발자 기록/본 캠프 개발 일지
2024년 5월 27일 월요일
What I did today
저는 주말에 지급받았던 강의의 내용 중 플레이어와 관련된 강의까지 공부했었기 때문에, 오늘은 남은 강의인 조명, 낮과 밤, 아이템과 상호작용, 인벤토리 기능, 적 생성과 로직 등등의 내용들을 보고 실습하면서 공부했습니다. 새로운 내용들이 너무 많고, 강의를 정주행해서 그런지 머리가 아프고 개발자의 길이 멀어만 보이네요.
그래도 지금까지 하면서 아무것도 몰랐던 제가 다양하게 만들어 볼 수 있다는 사실이 참 뿌듯하기도하고, 아직 배워야 할 내용들과 공부 및 복습해야 할 내용들이 산더미이기 때문에 더욱 열심히 해야 될 것 같습니다.
이번 강의에는 개인적으로 저번 주에 하던 것보다 내용이 어렵고 복잡하기 때문에 자주 복습을 해줘야할 것 같습니다. 그중 하나의 일환으로 써 TIL에도 유니티의 다양한 기능을 하나씩 복기해 보면서 복습하는 시간도 갖고, 이번 개인 과제의 필수 구현이 강의를 중심으로 구현할 수 있는 내용들이기 때문에 내일부터 강의를 복습하면서 개인 과제 구현에 힘써볼 생각입니다. 저녁을 먹고 난 후, 저는 개인 과제에 대한 Github 세팅과 기본 세팅을 하고, TIL을 쓰면서 복습하고 오늘 하루를 마무리했습니다.
GetComponent에 대해서
GetComponent란?
// 유니티에서 제공하는 모든 컴포넌트 타입과 사용자 정의 컴포넌트 타입(스크립트 등등)
GetComponent<컴포넌트 타입>();
// 스프라이트 렌더러를 가져오는 GetComponent 예시
public SpriteRenderer spriteRenderer;
private void Start()
{
spriteRenderer = GetComponent<SpriteRenderer>();
}
- 유니티에서 특정 게임 오브젝트에 첨부된 컴포넌트를 가져오는 데 사용되는 매우 유용한 메서드이다.
- 이 메서드는 다양한 유형의 컴포넌트에 접근할 수 있게 해 주며, 게임 오브젝트의 기능을 확장하고 상호작용할 때 자주 사용된다.
주요 특징
1. 컴포넌트 접근: 게임 오브젝트에 첨부된 특정 타입의 컴포넌트를 가져올 수 있다.
2. 다양한 타입 지원: 유니티에서 제공하는 모든 컴포넌트 타입과 사용자 정의 컴포넌트 타입에 대해 작동한다.
3. 성능 주의: 빈번한 호출 시 성능에 영향을 줄 수 있으므로 캐싱을 고려해야 한다.
사용 방법
1. 특정 타입의 컴포넌트 가져오기
가장 일반적인 사용 방법은 게임 오브젝트에서 특정 타입의 컴포넌트를 가져오는 것이다.
using UnityEngine;
public class Example : MonoBehaviour
{
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
}
위의 예제에서 GetComponent<Rigidbody>()는 Example 스크립트가 부착된 게임 오브젝트에 있는 Rigidbody 컴포넌트를 가져온다.
2. 자식 게임 오브젝트에서 컴포넌트 가져오기
GetComponentInChildren 메서드를 사용하면 자식 게임 오브젝트에 있는 컴포넌트도 가져올 수 있다.
using UnityEngine;
public class Example : MonoBehaviour
{
private Rigidbody rb;
void Start()
{
rb = GetComponentInChildren<Rigidbody>();
}
}
3. 부모 게임 오브젝트에서 컴포넌트 가져오기
GetComponentInParent 메서드를 사용하면 부모 게임 오브젝트에 있는 컴포넌트를 가져올 수 있다.
using UnityEngine;
public class Example : MonoBehaviour
{
private Rigidbody rb;
void Start()
{
rb = GetComponentInParent<Rigidbody>();
}
}
캐싱
GetComponent 는 런타임에 비교적 비용이 많이 드는 작업입니다. 따라서 자주 사용되는 컴포넌트는 Start나 Awake 메서드에서 한 번 가져와서 캐싱하는 것이 좋다.
using UnityEngine;
public class Example : MonoBehaviour
{
private Renderer rend;
void Awake()
{
rend = GetComponent<Renderer>();
}
void Update()
{
if (rend != null)
{
rend.material.color = Color.green;
}
}
}
'나의 개발자 기록 > 본 캠프 개발 일지' 카테고리의 다른 글
2024년 5월 29일 수요일 개발일지 / 개인 과제 진행 상황과 느낀 점 (0) | 2024.05.29 |
---|---|
2024년 5월 28일 화요일 개발일지 / TryGetComponent에 대해서 (0) | 2024.05.28 |
2024년 5월 24일 금요일 개발일지 / 유니티 숙련 주차와 Unity Input System 에 대해서 (0) | 2024.05.24 |
2024년 5월 23일 목요일 개발일지 / 팀 프로젝트 발표와 회고, SOLID 원칙에 대해서 (0) | 2024.05.23 |
2024년 5월 22일 수요일 개발일지 / 끝나가는 팀 프로젝트와 제출해야 할 것들 (0) | 2024.05.22 |