-
24년 6월 12 TIL공부 기록 2024. 6. 12. 23:50
Enable에 대해서
Enable은 특정 컴포넌트나 기능을 활성화하거나 비활성화하는 데 사용 된다고 한다. 유니티는 게임 및 인터랙티브 콘텐츠 개발에 널리 사용되는 강력한 게임 엔진으로, 다양한 스크립팅 API를 통해 오브젝트와 컴포넌트를 제어할 수 있다고 한다.
사전설명..
오늘 특강을 보면서 생각이 든 게 있다.
Player의 컨트롤을 구현 할 때 인벤토리나 메뉴버튼을 열었을 때 특정 기능들이 실행이 되지 않았으면 했던 게 있었는데 야매식으로만 했었다. 그러니까 화면 회전이 안 되게 하고 싶었는데 이것을 할 때 야매식으로 했었는데 이 Enable이란 거를 사용 하면 그 기능 자체를 가방 켰을 때 꺼버리게 해서 구현 하는 방법도 있다라는 것을 알았다.
그 외에도 Enable이 자주 나와서 자세히 알면 좋을 것 같다.
void Start()
{
this.enabled = false;
}
//////////////////////////////
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
this.enabled = true;
}
}
(gpt 예시 코드)
사용법은 이렇게 되는데 Start 함수를 보면 시작 할 때 이 컴포넌트(스크립트)가 비활성화가 되게 하고 다른 update가 들어있는 오브젝트에 스페이스바가 눌리면 다시 컴포넌트가 활성화가 되어서 이 스크립트의 기능을 사용 할 수 있게 되는 형식인 것이다.
이것을 아주 심화적으로 사용하면 되게 편리하고 좋게 코드를 구성 할 수 있다라고 해야 하나 특강에서 InputSystem과 연계해서 코드를 작성 했는데 지금은 다시보기가 다시 올라오지 않아서 다시 봐야 하지만 굉장히 좋은 방법으로 각 컴포넌트들이 활성화 비활성화가 되게 했다.
어떤 키가 눌리면 다른 기능은 꺼지고, 누른 게 켜지고 이 Enable을 잘 활용 하면 매우 편리하게 작업 할 수 있을 것 같다.
유니티의 컴포넌트 시스템은 각각의 컴포넌트가 개별적으로 동작하도록 설계되어 있는데, 컴포넌트의 enabled 속성을 통해 특정 기능을 활성화하거나 비활성화할 수 있다고 한다. 예를 들어, MonoBehaviour를 상속받는 스크립트의 경우 enabled 속성을 false로 설정하면 Update, FixedUpdate와 같은 주기적 메서드가 호출되지 않는다.
사용해야 하는 이유
필요하지 않은 기능이나 컴포넌트를 비활성화하여 성능을 최적화할 수 있다.
게임 오브젝트의 상태에 따라 특정 기능을 활성화하거나 비활성화하여 더 나은 게임 로직을 구현할 수 있다고 한다.
조건에 따라 컴포넌트를 동적으로 제어할 수 있어 더 유연한 개발이 가능하다고 한다.
그러니까 사용법은 여러개. 이러한 사용이유에 대해서 많이 알아야 할 것이다. 성능 좋은 게임을 만드려면,
Gpt가 알려주는 사용하면 좋은 상황
- 게임 시작 시 특정 기능을 비활성화: 예를 들어, 플레이어가 특정 레벨에 도달하기 전까지는 특정 기능을 비활성화할 수 있습니다.
- UI 요소 제어: UI 요소를 필요에 따라 활성화하거나 비활성화하여 사용자 경험을 개선할 수 있습니다.
- 디버깅 및 테스트: 특정 컴포넌트를 일시적으로 비활성화하여 디버깅 및 테스트를 쉽게 할 수 있습니다.
이러한 방법으로 유니티에서 enabled 속성을 활용하여 게임 오브젝트와 컴포넌트를 유연하게 제어할 수 있습니다.
렌더러 컴포넌트 제어. 그러니까 특정키를 눌리면 보이게 하는 것.
예를 들면 총게임에서 tab키 누르면 맵 나오게 하는 것? 아니면 야간투시경 같은 거 낀 효과? 등등도 할 수 있다.
충돌체의 활성화/비활성화
어떠한 상태가 되면 충돌체를 무시하는 효과를 적용 할 때 유용!
예시: 애니메이션 제어
특정 상황일 때 애니메이션도 제어 가능
특정 범위 내에서 기능 활성화
컬라이더를 적용 하여 닿으면 기능들을 활성화, 비활성화 등을 해서 유용하게 사용 가능.
예시: 버튼 클릭으로 UI 활성화/비활성화
아무튼 이 Enable 기능은 개발을 할 때 매우 강력한 기능이 된다고 한다는데 맞는 것 같다.
어느정도 하다보니 잘만 사용하면 매우 편리하게 기능들을 사용했다 안했다 할 수 있을 것 같다.
오늘 하나 배웠으니 앞으로 코드 작성 할 때 떠올리면 된다.
===========
벌써 심화주차인데 이거 끝나면 최종이다.. 튜터님이 날개를 달았어야 한다고 하는데 아직 안 꺽였다.
열심히 해보자.
'공부 기록' 카테고리의 다른 글
24년 6월 14일 TIL (0) 2024.06.14 24년 6월 13일 TIL (0) 2024.06.13 24년 6월 11일 TIL (0) 2024.06.11 24년 6월 10일 TIL (0) 2024.06.10 24년 6월 9일 (0) 2024.06.09